欢迎来访~

创建自签名免费SSL证书到Nginx

 

本文介绍了通过openssl命令生成自签名SSL证书的过程。

证书签名的 SSL 证书就是未经过权威第三方认证的 SSL 证书,常常用作测试 https 连接或者局域网内部访问之用。当用户访问使用这种 SSL 证书的网站时,往往会被提示“该网站的 SSL 证书未被认证!”。

创建自签名 SSL 证书

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

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

which openssl

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

yum 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 -rf 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 -rf ssl.csr

部署自签名的 SSL 证书到 Nginx

在这里我们仍然假设 Nginx 服务器运行在 Linux 系统之上。我们在/usr/local/nginx 目录下 (根据自己nginx安装路径) 创建 ssl 文件夹用以保存相关 SSL 证书文件:

mkdir /usr/local/nginx/ssl

通过ftp、scp或者本地cp等方法将我们生成的 ssl.key 和 ssl.crt 文件上传到/usr/local/nginx/ssl目录下。

修改对应 Nginx 中网站的配置文件,如下:

server {
 listen 80;
 server_name 你的域名或IP;
 return 301 https://$server_name$request_uri;
}
server {
 listen 443 ssl;
 server_name 你的域名或IP;
 ssl_certificate /usr/local/nginx/ssl/ssl.crt;
 ssl_certificate_key /usr/local/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 协议访问你的网站时会提示“网站证书不被信任”错误。

 
 
-The End-
 
赞(0)
可附来源转载:一只北极熊 » 创建自签名免费SSL证书到Nginx

富强、民主、文明、和谐、自由、平等、公正、法治、爱国、敬业、诚信、友善