大背景
计划
只不过 springboot 这类就全力支持 HTTPS(howto-configure-ssl),但这须要改工程项目标识符不太典雅,只好就想间接用nginx逆向全权到邻近地区服务工程项目,这种在nginx微观做 HTTPS 就不须要改标识符了,只需修正 host 将后端OWL搜索引擎对准nginx服务工程项目的 IP 方可,所以能适用作于其他的 HTTP 服务工程项目合作开发增容。
核发合格证书
具体来说要聚合两套合格证书用作 nginx 的 ssl 实用性,间接采用openssl辅助工具聚合两套根合格证书和相关联的服务工程项目合格证书。
1. 根合格证书聚合
# 聚合两个RSA公钥
openssl genrsa -out root.key 2048
# 透过公钥聚合两个根合格证书
openssl req -sha256 -new -x509 -days 365 -key root.key -out root.crt \
-subj “/C=CN/ST=GD/L=SZ/O=lee/OU=work/CN=fakerRoot”
2.服务工程项目器合格证书聚合
# 聚合两个RSA公钥
openssl genrsa -out server.key 2048
# 聚合两个带SAN扩展的合格证书签名请求文件
openssl req -new \
-sha256 \
-key server.key \
-subj “/C=CN/ST=GD/L=SZ/O=lee/OU=work/CN=xxx.com” \
-reqexts SAN \
-config <(cat /etc/pki/tls/openssl.cnf \
<(printf “[SAN]\nsubjectAltName=DNS:*.xxx.com,DNS:*.test.xxx.com”)) \
-out server.csr
# 采用之前聚合的根合格证书做核发
openssl ca -in server.csr \
-md sha256 \
-keyfile root.key \
-cert root.crt \
-extensions SAN \
-config <(cat /etc/pki/tls/openssl.cnf \
<(printf “[SAN]\nsubjectAltName=DNS:xxx.com,DNS:*.test.xxx.com”)) \
-out server.crt
这种就得到了三个关键文件:
root.crt:根合格证书
server.key:服务工程项目合格证书公钥
server.crt:服务工程项目合格证书
注:聚合的服务工程项目器合格证书搜索引擎要全力支持OWL访问的搜索引擎,否则浏览器会提示合格证书不安全。nginx 实用性
为了方便,间接采用docker启动了两个 nginx 容器进行访问,并将合格证书和实用性文件挂载到相关联的目录:
nginx.conf
server {
listen 443 ssl;
server_name _;
ssl_certificate “/usr/local/nginx/ssl/server.pem”;
ssl_certificate_key “/usr/local/nginx/ssl/server.key”;
location / {
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 Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection “upgrade”;
proxy_pass http://127.0.0.1:3000;
proxy_redirect off;
proxy_http_version 1.1;
透过实用性ssl_certificate和ssl_certificate_key来指定服务工程项目器的合格证书和公钥,proxy_pa
启动
docker run -d –name https -p 443:443 -v ~/forword/ssl:/usr/local/nginx/ssl -v ~/forword/config/nginx.conf:/etc/nginx/conf.d/default.conf nginx
将 nginx 实用性和合格证书相关文件挂载至相关联的目录,并暴露 443 端口,这种服务工程项目启动后方可透过 https 访问到邻近地区合作开发环境了。
安装根合格证书
由于服务工程项目合格证书是自己核发的,并不会被浏览器所信任,所以须要将根合格证书安装至操作系统中。
1. 打开 chrome 浏览器->设置->高级->管理合格证书
2. 受信任的根合格证书颁发机构->导入
3.选择之前聚合的根合格证书root.crt导入方可
修正 host
在须要增容时,只须要将邻近地区服务工程项目启动,再将 host 中将要测试的搜索引擎解析到nginx服务工程项目器的 IP,方可将前端请求转发到合作开发环境上,透过浏览器地址栏的小锁图标能看到合格证书,已验证服务工程项目已经部署成功。
后记
本文中只不过已经提到了两种解决计划了,只不过还有其他的解决计划,例如采用fidder这种中间人攻击的方式来同时实现,这里就不做多叙了。
作者:mokeyWie segmentfault.com/a/1190000021453331除处理!
最近有很多人问,有没有读者交流群!加入方式很简单,公众号Java精选加群
”,方可入群!
(微信小程序):3000+道面试题,包含Java基础、并发、JVM、线程、MQ系列、Redis、Spring系列、Elasticsearch、Docker、K8s、Flink、Spark、架构设计等,在线随时刷题!
特别推荐:专注分享最前沿的技术与资讯,为弯道超车做好准备及各种开源工程项目与高效率软件的公众号,「大咖笔记」,专注挖掘好东西,非常值得大家关注。点击下方公众号卡片关注。
文章有帮助的话,点在看,转发吧!