spring boot和nginx配置https使用自制ssl密钥(已验证)

公共部分(自制ssl密钥,使用centos系统生成证书):

1.通过centos服务器创建证书密钥文件server.key (验证使用A不生成密码)

A.生成不带密码的server.key

openssl genrsa -out server.key 2048

B.生成带密码的server.key

openssl genrsa -des3 -out server.key 2048
2.创建服务器证书的申请文件 server.csr
openssl req -new -key server.key -out server.csr
输入如下:
Enter pass phrase for root.key: ← 输入前面创建的密码
Country Name (2 letter code) [AU]:CN ← 国家代号,中国输入CN
State or Province Name (full name) [Some-State]:Changsha← 省的全名,拼音
Locality Name (eg, city) []:Changsha ← 市的全名,拼音
Organization Name (eg, company) [Internet Widgits Pty Ltd]:humiaomuyun ← 公司英文名
Organizational Unit Name (eg, section) []: ← 可以不输入
Common Name (eg, YOUR name) []: ← 此时不输入
Email Address []:xialvli@163.com ← 电子邮箱,可随意填
Please enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []: ← 可以不输入
An optional company name []: ← 可以不输入
3.生成证书文件server.crt和server.pkcs12
3.1 选择配置方式(验证使用B ip配置)

A. 单机环境,使用域名配置

echo "subjectAltName=DNS:server.esrichina.com" > cert_extensions

B.单机环境,使用ip配置

echo "subjectAltName=DNS:server.esrichina.com.com,IP:192.168.2.142" > cert_extensions

C.分布式部署,使用域名配置

echo "subjectAltName=DNS.1:server.esrichina.com,DNS.2:p1.esrichina.com,DNS.2:p2.esrichina.com"> cert_extensions
3.2 生成server.crt和server.pkcs12(需要输入密码,该密码在配置时有效)
openssl x509 -req -sha256 -in server.csr -signkey server.key -extfile cert_extensions -out server.crt -days 3650
openssl pkcs12 -inkey server.key -in server.crt -export -out server.pkcs12 -name server

Spring boot 配置https步骤(同时配置https和http):

1.application.properties文件配置
#证书的路径.
server.ssl.key-store=classpath.server.pkcs12
#证书密码,请修改为您自己证书的密码(在配置server.pkcs12证书是使用的密码)
server.ssl.key-store-password=123456
#秘钥库类型
server.ssl.keyStoreType=PKCS12
#http端口
http.port=8081
#https端口(默认端口为443)
server.port=8082
2.Spring boot项目导入server.pkcs12密钥文件

在这里插入图片描述

3.项目添加支持http 访问(在Application中配置)
@Value("${http.port}")
    private Integer port;

    private final static Logger logger = LoggerFactory.getLogger(Application.class);

//     配置http
    private Connector createStandardConnector() {
        Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
        connector.setPort(port);
        return connector;
    }

    @Bean
    public ServletWebServerFactory servletContainer() {
        TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory();
        tomcat.addAdditionalTomcatConnectors(createStandardConnector()); // 添加http
        return tomcat;
    }

如图所示:
在这里插入图片描述

Nginx配置https步骤:

https默认开启端口443 (特别注意
nginx配置https参考url:
https://blog.csdn.net/qq_22385935/article/details/91990876

查看已经开启的端口:firewall-cmd --list-ports  
开启端口:
firewall-cmd --zone=public --add-port=443/tcp --permanent
firewall-cmd --reload  

重启防火墙:
firewall-cmd --reload 
1.Nginx服务单独配置
vi /usr/local/pingos/conf/nginx.conf
listen 443 ssl;
ssl_certificate     /usr/local/pingos/cert/server.crt;
ssl_certificate_key /usr/local/pingos/cert/server.key;

如下图:
在这里插入图片描述

2.Nginx+spring boot同时配置(此处注意:这里是直接在nginx中spring boot的https,通过反向代理配置; spring boot的启动端口为8081
vi /usr/local/pingos/conf/nginx.conf
listen 443 ssl;
ssl_certificate     /usr/local/pingos/cert/server.crt;
ssl_certificate_key /usr/local/pingos/cert/server.key;
location / {
       proxy_pass http://127.0.0.1:8081/; 
       proxy_redirect off;
       proxy_set_header Host $host;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_set_header X-Forwarded-Proto $scheme;
       proxy_set_header X-Forwarded-Port $server_port;
}

如图所示:
在这里插入图片描述

客户端(Windows端)证书操作:

1.证书安装(从服务器下载证书 service.crt)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

结果显示:

在这里插入图片描述

查看证书信息:
在这里插入图片描述
在这里插入图片描述

2.证书删除

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

skyxiaolv

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值