一、OpenSSL生成自签名证书
OpenSSL的安装我们参考上一篇文章。https://blog.51cto.com/u_13312531/7077952
使用OpenSSL生成自签名证书的步骤:
创建私钥Key(.key文件);
创建签名请求(.csr文件);
将Key中的密码去掉;
用Key签名证书(.key+.csr=>.crt)
为HTTPS准备的证书需要注意,创建的签名请求的CN必须与域名完全一致,否则无法通过浏览器验证。
1.生成服务器私钥(.key 文件)
输入以下命令生成服务器私钥
openssl genrsa -des3 -out server.pass.key 2048
随后输入一个4位以上的密码,然后再输入一次密码。如图:
命令解释如下:
genra:生成RSA私钥
-des3:使用des3算法
-out :指定生成文件名
2048:私钥长度设置为2048
2.去除私钥中的密码
输入以下命令去除私钥中的密码
openssl rsa -in server.pass.key -out server.key
3.生成证书签名请求(.csr文件)
输入以下命令生成证书签名请求:
openssl req -new -key server.key -out server.csr -subj "/C=CN/ST=Zhejiang/L=Hangzhou/O=OrganizeName/OU=UnitName/CN=192.168.1.58"
参数介绍:
req:生成证书签名请求
-new:新生成
-key:私钥文件
-out:指定生成的CSR文件名
-subj:生成CSR证书的参数
subj参数说明如下:
字段 全称 举例
/C= Country 国家 CN
/ST= State or Province 州/省 Zhejiang
/L= Location or City 城市 Hangzhou
/O= Organization 组织/企业 OrganizeName
/OU= Organization Unit 部门 UnitName
/CN= Common Name 域名or IP www.yourdomain.com 或者 192.168.x.x
4.生成自签名SSL证书(.crt文件)
输入以下命令生成自签名SSL证书
openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt
参数介绍:
-days:证书有效期
-req:需要证书
-in:输入csr文件
-signkey:指定 .key 文件
-out:输出crt文件
文件夹总共有4个文件,server.pass.key 、server.key、server.csr、server.crt。
其中配置nginx的话需要server.key和server.crt两个文件。
至此,证书生成完成。
二、配置Nginx
1.先安装我们的证书。
Web服务器需要把server.crt
发给浏览器验证,然后用server.key
解密浏览器发送的数据。(剩下两个文件server.pass.key
和 server.csr
已经不需要了)。
2.服务端配置443端口并使用SSL证书
我们需要在nginx目录下的nginx.conf进行https的配置
我们可以在这个文件中添加对应的https配置。
server {
#监听443端口
listen 443 ssl;
server_name 127.0.0.1;
#ssl证书的crt文件路径
ssl_certificate D:\\soft\\nginx-1.24.0\\ssl\\server.crt;
#ssl证书的key文件路径
ssl_certificate_key D:\\soft\\nginx-1.24.0\\ssl\\server.key;
#反向代理
location / {
root html;
index index.html index.htm;
proxy_pass http://127.0.0.1:80;
}
}
修改好之后,我们执行nginx -s reload重新启动nginx。
最后我们在浏览器中进行访问。一开始会出现浏览器安全的提示,我们在高级那里设置继续访问就可以了。
我们的自签名证书要被浏览器信任的话有以下两种处理方式:
方式一:强制浏览器和操作系统接受我们自己的证书颁发机构
一种做法是:点击【高级】->【继续前往192.168.x.x(不安全)】。您可以强制浏览器和操作系统接受我们自己的证书颁发机构。因此,一旦安装 CA 证书并将其添加到受信任列表中,您将不会看到安全警告。
方式二:在您的浏览器/操作系统中安装证书授权
另一种做法:您还可以与您的开发团队共享 CA 证书,以便在他们的浏览器中安装。通过浏览器把证书导入并设置为“受信任”,以后该电脑访问网站就可以安全地连接Web服务器了。
在安全选项下面选择管理设备管理。
导入我们的证书。
最后我们使用https访问到了我们的页面。