nginx+springboot配置Https

使用javaJDK自带的keytool+openssl生成nginx SSL证书keytool和Openssl生成密钥nginx SSl配置

java Springboot配置问题与解决nginx配置8081端口异常centos上配置完nginx后访问报错403 failed (13: Permission denied)

必须nginx部署的前端和springboot开启的后端都需要配置SSL的密钥认证,这个两个认证最好一样(但是不一样好像也可以,如果密钥认证都下载)

使用javaJDK自带的keytool+openssl生成nginx SSL证书

keytool和Openssl生成密钥

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

nginx SSl配置

在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

java Springboot配置

拷贝密钥库文件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配置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

centos上配置完nginx后访问报错403 failed (13: Permission denied)

日志报错信息为:“/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

参考文章

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: