HTTPS证书生成和配置
HTTPS证书生成和配置
1:创建服务器私钥
openssl genrsa -des3 -out server.key 2048
输入密码:password
2:创建签名请求的证书(CSR)
openssl req -new -key server.key -out server.csr
3:加载SSL支持的Nginx并使用私钥时去除口令
cp server.key server.key.bak openssl rsa -in server.key.bak -out server.key
输入刚才设置的密码:password
4:自动签发证书,获取CRT文件
Days代表证书有效期(天)
openssl x509 -req -days 10000 -in server.csr -signkey server.key -out server.crt
5:最后 ==> 将密钥文件移动到Nginx根目录下cert文件夹。
==> 配置文件目录下配置。
server { listen 443 ssl; server_name api.domain.com; ssl_certificate cert/server.crt; # 证书地址 ssl_certificate_key cert/server.key; # 秘钥地址 access_log /var/log/nginx/access-api.log; error_log /var/log/nginx/error-api.log; location / { # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. # try_files $uri $uri/ =404; proxy_set_header Host $host; proxy_pass https://127.0.0.1:9666/; # 将 http 请求转向 https # rewrite ^(.*)$ https://$host$1; } }
生成证书主要命令
openssl genrsa -out server.key 2048 openssl req -new -key server.key -out server.csr openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
生成证书另一命令
openssl genrsa -out server.key 2048 openssl req -new -key server.key -out server.csr openssl x509 -req -days 3000 -sha1 -extensions v3_req -CA ca.crt -CAkey ca.key -CAserial ca.srl -CAcreateserial -in server.csr -out server.crt
-CA:指定CA证书的路径
-CAkey:指定 CA 证书的私钥路径
-CAserial:指定证书序列号文件的路径
-CAcreateserial:表示创建证书序列号文件(即上方提到的 serial 文件),创建的序列号文件默认名称为 -CA,指定的证书名称后加上 .srl 后缀
Springboot https 访问
apifox、postman
访问 Nginx(Https) 代理的 Springboot 服务显示:
Error: write EPROTO 66976008:error:100000f7:SSL routines:OPENSSL_internal:WRONG_VERSION_NUMBER:../../../../src/third_party/boringssl/src/ssl/tls_record.cc:242
原因:这是因为 nginx 配置了 https 访问,代理之后的 Springboot 服务没有配置 https 访问,所以报错,生成证书,将 Springboot 以 ssl 的链接方式启动即可。
Springboot 生成证书
keytool -genkey -alias tomcat -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 10000
输入密码:123456
配置下 Springboot 的 yml 文件重新启动。