Windows本地配置Https自签名

70 阅读3分钟

一、安装openssl

通过openssl安装生成ssl证书加密请求

1、下载openssl工具

下载openssl

image.png

2、配置环境变量

  • 安装之后配置环境变量: 添加新的系统变量 OPENSSL_HOME :OpenSSL安装目录。然后在Path变量末尾加:%OPENSSL_HOME%\bin;

image.png

image.png

  • 配置完成后检查版本

如下表示安装成功 image.png

二、使用openssl生成相关文件

1、创建私钥

openssl genpkey -algorithm RSA -out D:/绝对路径/name-private.key -pkeyopt rsa_keygen_bits:2048

这个命令使用了genpkey工具,这是OpenSSL的新一代密钥生成工具,提供更多配置选项。具体细节如下:

genpkey:这是一个通用的密钥生成工具,支持多种算法和选项。

  • -algorithm RSA:指定生成RSA密钥。

  • -out private.key:输出密钥文件的文件名。/path:/为自己的保存路径。

  • -pkeyopt rsa_keygen_bits:2048:指定密钥的位数,这里是2048位。

    生成私钥后,接下来你可以根据需要生成证书签名请求(CSR),然后生成自签名证书或与证书颁发机构(CA)交互以获取正式证书。

2、生成签名

注意生成CSR时需要提供,如国家C、省份ST 、城市L 、组织O 、 组织单位OU和通用名CN 最重要的是Common Name表示要使用https访问的域名

openssl req -new -key name-private.key -out D:/绝对路径/name-mycsr.csr

3、生成证书

如果你只需要一个自签名证书用于开发或测试用途,你可以使用以下命令生成一个自签名证书。这里我们假设你希望生成一个有效期为一年的证书。

openssl req -x509 -key name-private.key -in name-mycsr.csr -out  D:/绝对路径/name-mycert.crt -days 365

在使用OpenSSL生成自签名证书时,你可能会遇到以下警告:

image.png 这些警告通常不会影响基本功能,可以忽略

Warning: Not placing -key in cert or request since request is used

OpenSSL注意到你指定了一个存在的CSR文件。它的意思是,证书中不会包含私钥的引用,因为你提供了一个CSR文件来生成证书。

这个警告可以忽略,因为它不影响生成的自签名证书的实际使用。

Warning: No -copy_extensions given; ignoring any extensions in the request

这个警告是因为你生成的CSR可能包含了一些扩展字段(如Subject Alternative Name,SAN),但是在生成证书时,你没有指定要复制这些扩展字段。

要解决这个问题,可以在命令中使用-copy_extensions选项。首先,你需要一个OpenSSL配置文件(例如openssl.cnf),然后在生成证书时指定该文件并使用-copy_extensions选项。

三、配置nginx

```server {
    listen 443 ssl;
    ssl_certificate /path/to/myname.crt;
    ssl_certificate_key /path/to/myname.key;
    # 其他配置
}
 
server {
       listen       443 ssl;
       server_name  axxx.com;
 
       ssl_certificate      D:/nginx/nginx-1.22.1/ssl/myname.crt;
       ssl_certificate_key  D:/nginx/nginx-1.22.1/ssl/myname.key;
 
       ssl_session_cache    shared:SSL:1m;
       ssl_session_timeout  5m;
 
       ssl_ciphers  HIGH:!aNULL:!MD5;
       ssl_prefer_server_ciphers  on;
 
       location / {
           proxy_pass http://localhost:8001; # 代理到第一个Spring Boot应用
           proxy_set_header Host $host;
           proxy_set_header X-Real-IP $remote_addr;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
           proxy_set_header X-Forwarded-Proto $scheme;
       }
}
 
server {
       listen       443 ssl;
       server_name  bxx.com;
 
       ssl_certificate      D:/nginx/nginx-1.22.1/ssl/myname.crt;
       ssl_certificate_key  D:/nginx/nginx-1.22.1/ssl/myname.key;
 
       ssl_session_cache    shared:SSL:1m;
       ssl_session_timeout  5m;
 
       ssl_ciphers  HIGH:!aNULL:!MD5;
       ssl_prefer_server_ciphers  on;
 
       location / {
           proxy_pass http://localhost:8002; # 代理到第一个Spring Boot应用
           proxy_set_header Host $host;
           proxy_set_header X-Real-IP $remote_addr;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
           proxy_set_header X-Forwarded-Proto $scheme;
       }
}