创建并部署自签名的 SSL 证书到 Nginx

创建自签名 SSL 证书

创建自签名的 SSL 证书需要用到 openssl,在 Windows,Mac OS X,以及 Linux 平台上都可以安装使用 openssl,在这里以 Linux 系统为例,一般来说 openssl 被默认安装在各大 Linux 发行版当中。

首先,确认系统中安装了 openssl:

which openssl

如果系统中已经安装了 openssl,当执行这条命令后,终端会返回一条 openssl 命令的路径,如果提示未安装,可以使用系统中安装的包管理软件来安装。对于 Ubuntu 系统:

sudo apt-get install openssl

接下来,我们先生成一个名为“ssl.key”的 RSA key文件:

openssl genrsa -des3 -passout pass:x -out ssl.pass.key 2048
openssl rsa -passin pass:x -in ssl.pass.key -out ssl.key

执行完这两条命令后,当前目录下应该新增了两个文件:ssl.pass.key 和 ssl.key,ssl.pass.key 是为了生成 ssl.key 产生的中间文件,此时已经不再被需要,可以删除:

rm ssl.pass.key

接着,利用已经生成的 ssl.key 文件,进一步生成 ssl.csr 文件:

openssl req -new -key ssl.key -out ssl.csr

执行此行命令会提示输入密码,按回车即可,因为前面我们在生成 ssl.key 时选择了密码留空。

最后我们利用前面生成的 ssl.key 和 ssl.csr 文件来生成 ssl.crt 文件,也就是自签名的 SSL 证书文件:

openssl x509 -req -days 365 -in ssl.csr -signkey ssl.key -out ssl.crt

这一步之后,我们得到一个自签名的 SSL 证书文件 ssl.crt,有效期为 365 天。此时,ssl.csr 文件也已经不再被需要,可以删除掉了:

rm ssl.csr

部署自签名的 SSL 证书到 Nginx

在这里我们仍然假设 Nginx 服务器运行在 Linux 系统之上。我们在 /etc/nginx 目录下创建 ssl 文件夹用以保存相关 SSL 证书文件:

sudo mkdir /etc/nginx/ssl

通过 FTP 或者 SFTP 等协议将我们在本地生成的 ssl.key 和 ssl.crt 文件上传到 /etc/nginx/ssl 目录下(我们也可以直接在 Nginx 运行的服务器上进行上一步生成 SSL 证书的操作,这样就省去了从本地上传到服务器的操作)。修改对应 Nginx 中网站的配置文件,如下:

server { listen 80; server_name 你的域名; return 301 https://$server_name$request_uri; } server { listen 443 ssl spdy; server_name 你的域名; ssl_certificate /etc/nginx/ssl/ssl.crt; ssl_certificate_key /etc/nginx/ssl/ssl.key; ssl_session_cache shared:SSL:20m; ssl_session_timeout 60m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #其他配置内容 }

其中第四行 return 301 https://$server_name$request_uri; 是将所有指向该网站的 http 链接自动重定向到 https 链接,从而避免了 404 错误。

配置文件修改完毕后,重启 Nginx 服务:

service nginx restart

此时,直接使用 https 协议访问你的网站时会提示“网站证书不被信任”错误。别忘了开启 CloudFlare 的 CDN 服务,并在 CloudFlare 后台开启 SSL 功能。

原文链接:https://blog.csdn.net/qq1353424111/article/details/50523822

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享