阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Nginx自签SSL证书创建及配置方法

113次阅读
没有评论

共计 3193 个字符,预计需要花费 8 分钟才能阅读完成。

场景:

Nginx 使用自签 SSL 证书实现 https 连接。

方法:

第一步:使用 OpenSSL 创建证书

# 建立服务器私钥(过程需要输入密码,请记住这个密码)生成 RSA 密钥
>openssl genrsa -des3 -out server.key 1024
# 生成一个证书请求   
>openssl req -new -key server.key -out server.csr
# 需要依次输入国家,地区,组织,email。最重要的是有一个 common name,可以写你的名字或者域名。如果为了 https 申请,这个必须和域名吻合,否则会引发浏览器警报。生成的 csr 文件交给 CA 签名后形成服务端自己的证书
#—————————————————————————————————————
Enter pass phrase for server.key:                                      #之前输入的密码
Country Name (2 letter code) [XX]:                  #国家
State or Province Name (full name) []:                #区域或是省份
Locality Name (eg, city) [Default City]:                #地区局部名字
Organization Name (eg, company) [Default Company Ltd]:        #机构名称:填写公司名
Organizational Unit Name (eg, section) []:              #组织单位名称: 部门名称
Common Name (eg, your name or your server’s hostname) []:    #网站域名
Email Address []:                            #邮箱地址
A challenge password []:                        #输入一个密码,可直接回车
An optional company name []:                      #一个可选的公司名称,可直接回车
#—————————————————————————————————————
# 输入完这些内容,就会在当前目录生成 server.csr 文件
>cp server.key server.key.org
>openssl rsa -in server.key.org -out server.key
# 使用上面的密钥和 CSR 对证书进行签名
# 以下命令生成 v1 版证书
>openssl x509 -req  -days 365 -sha256  -in server.csr -signkey server.key -out servernew.crt
# 以下命令生成 v3 版证书
>openssl x509 -req  -days 365 -sha256 -extfile openssl.cnf -extensions v3_req  -in server.csr -signkey server.key -out servernew.crt

v3 版证书另需配置文件 openssl.cnf,该文件内容详见这篇《OpenSSL 生成 v3 证书方法及配置文件》http://www.linuxidc.com/Linux/2016-12/138670.htm

至此,证书生成完毕!

附常用对证书的操作:

查看 key、csr 及证书信息

openssl rsa -noout -text -in myserver.key
openssl req -noout -text -in myserver.csr
openssl x509 -noout -text -in ca.crt

不同格式证书的转换

# PKCS 转换为 PEM
> openssl pkcs12 -in myserver.pfx -out myserver.pem -nodes
 
# PEM 转换为 DER
> openssl x509 -outform der -in myserver.pem -out myserver.[der|crt]
 
# PEM 提取 KEY
> openssl RSA -in myserver.pem -out myserver.key
 
# DER 转换为 PEM
> openssl x509 -inform der -in myserver.[cer|crt] -out myserver.pem
 
# PEM 转换为 PKCS
> openssl pkcs12 -export -out myserver.pfx -inkey myserver.key -in myserver.pem -certfile ca.crt

第二步:Nginx 下 ssl 配置方法

首先,确保安装了 OpenSSL 库,并且安装 Nginx 时使用了–with-http_ssl_module 参数。

证书拷至 nginx 目录,配置如下 server

server {

    listen 443 ssl;

    server_name your.domain.name;

    index index.html index.htm index.php;

    ssl on;

    ssl_certificate      ssl/hotyq.com.crt;

    ssl_certificate_key  ssl/hotyq.com.key;

    ssl_session_cache    shared:SSL:10m;

    ssl_session_timeout 5m;

    ssl_protocols    TLSv1 TLSv1.1 TLSv1.2;

}

另,还可加入如下配置实现 https 重定向

server {

    isten 80;

    server_name your.domain.name;

    rewrite ^(.*) https://$server_name$1 permanent;

}

注意:

第一次配置 https 时必须重启 nginx 才能生效,不能 reload!

更多 Nginx 相关教程见以下内容

CentOS 6.2 实战部署 Nginx+MySQL+PHP http://www.linuxidc.com/Linux/2013-09/90020.htm

搭建基于 Linux6.3+Nginx1.2+PHP5+MySQL5.5 的 Web 服务器全过程 http://www.linuxidc.com/Linux/2013-09/89692.htm

CentOS 6.3 下 Nginx 性能调优 http://www.linuxidc.com/Linux/2013-09/89656.htm

CentOS 6.3 下配置 Nginx 加载 ngx_pagespeed 模块 http://www.linuxidc.com/Linux/2013-09/89657.htm

Ubuntu 16.04 LTS 上安装 Nginx、MariaDB 和 HHVM 运行 WordPress http://www.linuxidc.com/Linux/2016-10/136435.htm

Nginx 安装配置使用详细笔记 http://www.linuxidc.com/Linux/2014-07/104499.htm

Linux(RHEL7.0)下安装 Nginx-1.10.2 http://www.linuxidc.com/Linux/2016-10/136484.htm

Nginx 日志过滤 使用 ngx_log_if 不记录特定日志 http://www.linuxidc.com/Linux/2014-07/104686.htm

Nginx 的详细介绍:请点这里
Nginx 的下载地址:请点这里 

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-12/138669.htm

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-21发表,共计3193字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中