1、使用jdk执行生成keystore密钥对
(-alias别名 –validity 3650表示10年有效,设置大小)
keytool -genkeypair -alias xxx -keyalg RSA -keysize 2048 -validity 3650 -keypass 123456 -storepass 123456 -keystore D://cert//server.keystore
2、把jks证书
keytool -importkeystore -srckeystore D:\cert\server.keystore -destkeystore D:\cert\server.p12 -srcstoretype JKS -deststoretype PKCS12
3、导出 cer证书
keytool -exportcert -file D:\cert\server.cer -alias xxx -keystore D://cert//server.keystore -storepass 123456
4、以下需安装openssl, 并打开openssl命令窗口
#windows下载链接 http://slproweb.com/products/Win32OpenSSL.html
建议下载1.1.1版本,3.0以上版本可能存在兼容性问题
linux查看openssl版本:openssl version
5、将cer格式证书转pem格式
openssl x509 -inform der -in D:\cert\server.cer -out D:\cert\server.pem
6、提取私钥
openssl pkcs12 -nocerts -nodes -in D:\cert\server.p12 -out D:\cert\server.key
在server配置中添加如下内容
ssl_certificate cert/server.pem;
ssl_certificate_key cert/server.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
例如:
server {
listen 8081 ssl;
server_name 10.47.101.213;
ssl_certificate cert/server.pem;
ssl_certificate_key cert/server.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
root /home/luxassets/dist; # 路径改成自己的dist路径
try_files $uri $uri/ /index.html;
index index.html index.htm;
}
location ^~/api/ {
proxy_pass https://10.47.101.213:8088/; #设置监控后端启动的端口
}
}
测试nginx.conf是否可用
nginx -t
然后重新载入设置
nginx -s reload
拷贝密钥库文件home.pkcs12到类路径下:可放在resources目录下,或其他java可查找到的类路径下
application.yml配置:
server:
port: 8000
ssl:
key-store-type: PKCS12
key-store: classpath:server.p12
key-alias: xxx
key-store-password: 123456
或者可以使用server.keystore
server:
port: 8000
ssl:
key-store-type: JKS
key-store: classpath:server.keystore
key-alias: xxx
key-store-password: 123456
为nginx配置8081端口,结果nginx报错。无法启动nginx
(nginx配置8081端口监听,通过查看日志,出现nginx: [emerg] bind() to 0.0.0.0:8081 failed (13: permission denied)异常。但是其它端口监听/访问正常。)
有效的解决方案:
(1)、检查已开放端口
sudo semanage port -l | grep http_port_t
(2)、如果8081端口未出现在列表中,则执行:
sudo semanage port -a -t http_port_t -p tcp 8081
(3)、通过将-a选项替换为-m for modify,将tcp port 8081添加到http_port_t所以有效的命令是:
semanage port -m -t http_port_t -p tcp 8081
日志报错信息为:“/home/web/manage/dist/index.html” failed (13: Permission denied)
**原因:**selinux的状态为可用状态,所以导致无法访问
解决方法:
3.1、vim /etc/selinux/config
3.2、将SELINUX=enforcing 修改为 SELINUX=disabled 状态。
3.3、然后重启:reboot