win如何使用OpenSSL生成自签名证书,使 http 升级为 https {#win如何使用OpenSSL生成自签名证书,使-http-升级为-https}
前言 {#前言}
HTTPS其实就是HTTP over SSL,也就是让HTTP连接建立在SSL安全连接之上。
创建自签名证书需要安装openssl。参考本文 安装OpenSSL 部分。
使用OpenSSL生成自签名证书的步骤:参考本文 使用OpenSSL生成自签名证书 部分。
- 创建私钥Key(.key文件);
- 创建签名请求(.csr文件);
- 将Key中的密码;
- 用Key签名证书(.key+.csr=>.crt)
为HTTPS准备的证书需要注意,创建的签名请求的CN必须与域名完全一致,否则无法通过浏览器验证。
文章目录 {#文章目录}
CA证书和自签名证书的区别? {#CA证书和自签名证书的区别?}
CA证书和自签名证书都是用于加密通信的数字证书,但是它们之间有一些重要的区别:
- CA证书是由公认的数字证书授权机构(CA)颁发的,而自签名证书是由用户自行创建的。CA是Certificate Authority的缩写,也叫"证书授权中心"。
- CA证书的安全性更高,因为它们受到权威机构的信任和监管。自签名证书的安全性取决于用户的技能和处理过程。
- CA证书可用于公共网络和网站,因为它们已被许多浏览器和操作系统信任。自签名证书只能在私有网络或用于测试目的使用。
- CA证书需要支付费用,而自签名证书是免费的。
总的来说,如果您需要在公共网络上运行网站或应用程序,那么建议使用CA证书。如果您只需要在私有网络上加密通信或进行测试,则可以使用自签名证书。
安装OpenSSL {#安装OpenSSL}
下载OpenSSL安装包 {#下载OpenSSL安装包}
前往 https://slproweb.com/products/Win32OpenSSL.html 下载win OpenSSL安装包
exe 和 msi二选一即可。注意,我们Light版本是轻量版,我们直接下载完整版本。
下载下来是Win64OpenSSL_Light-3_1_1.msi
安装 {#安装}
安装过程多数选择默认即可。
注意在选择将OpenSSL的DLL安装到 Windows/System/
下还是安装目录的 bin
目录下时,我们选择 bin
目录,避免System目录下其他软件的DLL影响OpenSSL。
其他页面一直点击下一步即可安装完成。
最后这个页面可以选择给作者打赏,不打赏的话全部取消勾选即可。
安装完成。
设置环境变量 {#设置环境变量}
我们还需要在系统环境变量里面添加路径,我的是 C:\Program Files\OpenSSL-Win64\bin
添加好后,点击右边上移按钮,上移到最上面:
保存修改即可。
验证安装是否正确 {#验证安装是否正确}
打开cmd,输入命令查看版本:
|-------------------------|
| openssl version
|
![image-20230620170841365] https://yxyangpic.oss-cn-hangzhou.aliyuncs.com/2024/04/27/662bd7522274a.png )
可以看到安装成功。如果不是我们安装的版本信息,可能需要重启电脑。
使用OpenSSL生成自签名证书 {#使用OpenSSL生成自签名证书}
进入SSL文件夹 {#进入SSL文件夹}
创建SSL文件夹,用于存放生成的证书文件。我的是 D:\ssl证书
打开cmd,cd到SSL文件夹路径,输入命令openssl回车。
|--------------------------------|
| D: cd D:\ssl证书 openssl
|
生成服务器私钥(.key 文件) {#生成服务器私钥(-key-文件)}
输入以下命令生成秘钥文件:
|--------------------------------------------------------|
| openssl genrsa -des3 -out server.pass.key 2048
|
随后输入一个4位以上的密码,然后再输入一次密码。如图:
命令解释如下:
genra:生成RSA私钥
-des3:使用des3算法
-out :指定生成文件名
2048:私钥长度设置为2048
去除私钥中的密码 {#去除私钥中的密码}
|---------------------------------------------------------|
| openssl rsa -in server.pass.key -out server.key
|
rsa: 生成RSA私钥
-in:输入私钥文件
-out: 输出私钥文件
无密码:设置无密码的私钥文件
随后输入server.pass.key的密码。如图:
生成证书签名请求(.csr文件) {#生成证书签名请求(-csr文件)}
输入以下命令生成证书签名请求:
|-------------------------------------------------------------------------------------------------------------------------------------------|
| openssl req -new -key server.key -out server.csr -subj "/C=CN/ST=Zhejiang/L=Hangzhou/O=OrganizeName/OU=UnitName/CN=192.168.0.174"
|
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 |
生成自签名SSL证书(.crt文件) {#生成自签名SSL证书(-crt文件)}
|-----------------------------------------------------------------------------------------|
| 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两个文件。
至此,证书生成完成。
X.509 证书包含三个文件:key,csr,crt
key是服务器上的私钥文件,用于对发送给客户端数据的加密,以及对从客户端接收到数据的解密
csr是证书签名请求文件,用于提交给证书颁发机构(CA)对证书签名
crt是由证书颁发机构(CA)签名后的证书,或者是开发者自签名的证书,包含证书持有人的信息,持有人的公钥,以及签署者的签名等信息
备注:在密码学中,X.509是一个标准,规范了公开秘钥认证、证书吊销列表、授权凭证、凭证路径验证算法等。
自签名证书的使用(以Nginx为例) {#自签名证书的使用-以Nginx为例}
服务端上传SSL证书 {#服务端上传SSL证书}
Web服务器需要把 server.crt
发给浏览器验证,然后用 server.key
解密浏览器发送的数据。(剩下两个文件 server.pass.key
和 server.csr
已经不需要了)。
服务端配置443端口并使用SSL证书 {#服务端配置443端口并使用SSL证书}
以Nginx为例,我们在 %你的Nginx安装目录%/conf/nginx.conf
里添加对443端口的监听。
需要在 server{...}
中配置:
|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| server { #监听443端口 listen 443 ssl; server_name 127.0.0.1; #ssl证书的crt文件路径 ssl_certificate D:\\SSLCertificate\\server.crt; #ssl证书的key文件路径 ssl_certificate_key D:\\SSLCertificate\\server.key; #反向代理 location / { root html; index index.html index.htm; proxy_pass http://127.0.0.1:7001; } }
|
修改完成后,输入以下命令重新加载 nginx.conf
即可
|----------------------------------------|
| D: cd D:\Nginx nginx -s reload
|
客户端访问https {#客户端访问https}
如果一切顺利,打开浏览器,就可以通过HTTPS访问网站。第一次访问时会出现警告(因为我们的自签名证书不被浏览器信任)如图所示:
方式一:强制浏览器和操作系统接受我们自己的证书颁发机构 {#方式一:强制浏览器和操作系统接受我们自己的证书颁发机构}
一种做法是:点击【高级】->【继续前往192.168.x.x(不安全)】。
您可以强制浏览器和操作系统接受我们自己的证书颁发机构。因此,一旦安装 CA 证书并将其添加到受信任列表中,您将不会看到安全警告。
方式二:在您的浏览器/操作系统中安装证书授权 {#方式二:在您的浏览器-操作系统中安装证书授权}
另一种做法:您还可以与您的开发团队共享 CA 证书,以便在他们的浏览器中安装。通过浏览器把证书导入并设置为"受信任",以后该电脑访问网站就可以安全地连接Web服务器了。
声明:文章转载自csdn win 如何使用 OpenSSL 生成自签名证书 如有侵权 请发送邮件至 yxyang0511@163.com 我会立刻进行删除处理