流程
准备阶段:
安装jdk的keytool命令
安装openssl命令
注:也可以只是用openssl产生证书。
1.使用jdk提供的keytool工具创建key.store证书
keytool -genkey -alias test-server -dname "C=CN,ST=GD,L=SZ,OU=test,CN=www.test.com" -keyalg RSA -keysize 2048 -validity 3650 -keystore test-server.store -storepass 123456 -keypass 123456
说明:
-alias指定别名为test-server;
dname 由C 国家,ST 省份,L 城市,OU 单位,CN 一般网址(可以填任意)组成;
-keyalg指定RSA算法;
-keystore指定密钥文件名称为test-server.store;
-storepass指定存储密码;
-keypass指定私钥密码;
-validity指定有效期为3650天。
2.将生成的keystore转换为PKCS12
通过keytool -importkeystore -help查看参数说明。
keytool -importkeystore -srckeystore test-server.store -destkeystore test-server.store.p12 -srcstoretype JKS -deststoretype PKCS12 -srcstorepass 123456 -deststorepass 123456
3.从PKCS12证书中提取公钥证书
通过openssl pkcs12 -help 查看参数说明。
openssl pkcs12 -in test-server.store.p12 -passin pass:123456 -nokeys -out cert.pem
4.从PKCS12证书中提取私钥
提取私钥。
openssl pkcs12 -in test-server.store.p12 -passin pass:123456 -nocerts -nodes -out test-server-private-key.pem
转换证书为rsa格式。
openssl rsa -in test-server-private-key.pem -out private-key.pem
5.查看nginx是否安装了ssl模块
通过nginx -V 查看,如果出现 (configure arguments: --with-http_ssl_module), 则已安装是否安装了ssl模块。
D:\nginx>nginx -V
nginx version: nginx/1.17.2
built by cl 16.00.40219.01 for 80x86
built with OpenSSL 1.1.1c 28 May 2019
TLS SNI support enabled
configure arguments: --with-stream_ssl_module
7.配置nginx
拷贝cert.pem,private-key.pem到nginx conf目录,配置server模块。
server {
listen 1443 ssl; #监听端口
server_name _; #请求域名
ssl_certificate cert.pem; #pem证书私钥路径
ssl_certificate_key private-key.pem; #pem证书公钥路径
ssl_session_timeout 5m; #会话超时时间
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; #加密算法
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #SSL协议
location / {
root html;
index index.html index.htm;
}
}
7.验证
image.png
网友评论