OpenSSL生成证书
1. 创建 server.key 文件---- 服务端秘钥
// 私钥key生成 使用OpenSSL工具的genrsa生成私钥文件用于加密和解密数据
// 命令生成一个 1024位的秘钥 可以改成2048 ,同时有一个des3方法加密的密码
openssl genrsa -des3 -out server.key 1024
//免输入密码可以改成
open ssl genrsa -out server.pem 2048
// server.key 或 server.pem 都可
2. 创建 server.csr 文件
// 生成一个新的文件cert.csr 交给CA签名后形成服务端自己的证书
openssl req -new -key private.key -out server.csr -config /usr/local/openssl-1.1.1m/ssl/openssl.cnf
//客户端同样操作
openssl genrsa -des3 -out client.key 1024
openssl req -new -key client.key -out client.csr -config /xxx/openssl.cnf
3. 创建 ca.crt 和 ca.key 文件
openssl req -new -x509 -keyout ca.key -out ca.crt -config /usr/local/openssl-1.1.1m/ssl/openssl.cnf
//自己颁发证书
open ssl req -new -x509 -key private.pem -out cacert.pem -days 1095
// private.pem + cacert.pem 组合
//CSR文件需要CA的签名才能形成证书
//生成CA
openssl req -new -x509 -keyout ca.key -out ca.crt -config /xxx/openssl.cnf
4. 创建 server.crt 文件
//服务器证书crt
//生成ca证书
openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -config /usr/local/openssl-1.1.1m/ssl/openssl.cnf
//用生成的CA证书为刚才生成的server.csr,client.csr文件签名
openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -config openssl.cnf
openssl ca -in client.csr -out client.crt -cert ca.crt -keyfile ca.key -config openss.cnf
//如果报错: I am unable to access the ./demoCA/newcerts directory
// ./demoCA/newcerts: No such file or directory
// 当前操作目录 新建demoCA\newcerts文件夹
// demoCA文件夹下新建一个空的index.txt文件
// 再新建一个serial文件 写入需要 01
5. 创建免密key文件
openssl rsa -in private.key -out server.key.unsecure
检查证书的私钥和证书是否匹配
openssl x509 -noout -modulus -in ssl.crt | openssl md5
(stdin)= 8216eeaa8e1a346dd1f5dfecaadfec1d
openssl rsa -noout -modulus -in ssl.key | openssl md5
(stdin)= 8216eeaa8e1a346dd1f5dfecaadfec1d
nginx添加配置
// nginx重启问题 nginx -s reload 只加载配置文件
// 需要 nginx -s stop
// nginx 来启动后才能开通新添加端口号
server {
listen 443 ssl;
server_name 10.10.5.101;
ssl_certificate "/app/nginx/ssl/ca.crt";
ssl_certificate_key "/app/nginx/ssl/ca.key";
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:DH:EDH:!EXP:+MEDIUM;
ssl_prefer_server_ciphers on;
index index.htm index.html login.jsp index.jsp;
location / {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, PATCH, OPTIONS';
add_header "Access-Control-Allow-Credentials" "true";
add_header "Access-Control-Allow-Headers" "x-requested-with,content-type";
proxy_pass http://10.10.5.101:9356;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
access_log /app/logs/nginx/access_https.log main;
}
}