一、安装openssl
通过openssl安装生成ssl证书加密请求
1、下载openssl工具
2、配置环境变量
- 安装之后配置环境变量: 添加新的系统变量 OPENSSL_HOME :OpenSSL安装目录。然后在Path变量末尾加:%OPENSSL_HOME%\bin;
- 配置完成后检查版本
如下表示安装成功
二、使用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生成自签名证书时,你可能会遇到以下警告:
这些警告通常不会影响基本功能,可以忽略
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;
}
}