如何在云帮上配置 https

2017-03-31 17:56:19 +08:00
 goodraincloud

序 相关组件介绍

本次分享主要涉及到两个模块console模块和openresty模块。

即云帮(ACP)控制台模块,为用户提供可视化 Web 操作界面,监听 443 端口即可,对证书需求:域名证书即可。

即云帮负载均衡模块。云帮所有的对外服务都配置在负载均衡上,都是通过负载均衡转发到对应的应用与服务。大部分情况下监听 443 端口即可,如果单节点监听非占用端口即可。对证书需求:因为涉及的域名较多,这里我们选择泛域名证书。

大概的操作流程如下:

那么接下来就说说如何具体去配置 https 。

0x00 利用 openssl 自签证书

准备工作:

cd /etc/goodrain/nginx/ssl #用于存放证书
mkdir console.goodrain.me #域名对应的目录
cd console.goodrain.me

生成证书操作:

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/goodrain/nginx/ssl/console.goodrain.me/console.key -out /etc/goodrain/nginx/ssl/console.goodrain.me/console.crt

特别说明:回车之后会让填写一些信息,这些适当根据提示填写。但是最重要的就是要求 Common Name 填写慎重,您需要输入与您的服务器关联的域名或您的服务器的公共 IP 地址。

demo 如下:

Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:BeiJing
Locality Name (eg, city) [Default City]:BeiJing
Organization Name (eg, company) [Default Company Ltd]:Goodrain, Inc.
Organizational Unit Name (eg, section) []:Cloud 
Common Name (eg, your name or your server's hostname) []:console.goodrain.me
Email Address []:info@goodrain.me

域名一定要写自己所需 https 的域名。

0x01 云帮控制台支持 https

cp console ~/ #备份路径自选,但不要备份到当前目录下

#在原有的配置下添加如下配置
#ip 同原配置里的监听 8688 的 ip 相同
server {
    listen ip:443;
    server_name console.goodrain.me;
        ssl          on;
    ssl_certificate /etc/nginx/ssl/console.goodrain.me/console.crt;
    ssl_certificate_key /etc/nginx/ssl/console.goodrain.me/console.key;
    location / {
        proxy_pass http://console;
        proxy_set_header Host $host;
        proxy_redirect off;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_connect_timeout 60;
        proxy_read_timeout 600;
        proxy_send_timeout 600;
    }
}

这样配置的话, http 和 https 都是支持的。如果想强制跳转修改监控 8688 的 server

server {
    listen ip:8688;
    server_name console.goodrain.me;
        rewrite ^(.*)$  https://$server_name$1 permanent;
}

修改完。重启 nginx 服务。

dc-compose stop nginx
cclear
dc-compose up -d

配置到这里,控制台的 https 配置已经完成。 测试:

 [root@iZm5e7u02k402beob2081gZ ~]# curl -I console.goodrain.me/login
HTTP/1.1 301 Moved Permanently
Server: openresty
Date: Thu, 30 Mar 2017 03:46:37 GMT
Content-Type: text/html
Content-Length: 185
Connection: keep-alive
Location: https://console.goodrain.me/login

如果是浏览器访问,由于证书是自签的,需要添加信任。

0x02 平台应用支持 https

泛域名证书配置:

 openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout server.key -out server.crt

证书上传到 openresty 服务里:

docker cp server.crt openresty:/usr/local/openresty/nginx/conf/
docker cp server.key openresty:/usr/local/openresty/nginx/conf/

配置计算节点的 openresty :

cd /etc/goodrain/openresty/servers/http
cp default.conf default443.conf
# 编辑 default443.conf
修改如下:
listen       7443;
ssl on;
ssl_certificate /usr/local/openresty/nginx/conf/server.crt;
ssl_certificate_key /usr/local/openresty/nginx/conf/server.key;
 #其他保持不变。

这里监听的是 7443 ,因为我的是单节点部署的, 443 端口已经被其他服务监听,故使用 7443 端口。 配置完以上的,重启 openresty 即可。

dc-compose stop openresty
cclear
dc-compose up -d

配置到这里,应用的 https 已经配置完成了。 测试: curl https://domain:7443 即可,如果多节点配置直接配置 443 就 ok 了。

说明:当仅一台服务器时无法监听 443 端口,需使用非被占用的端口如 7443 ,访问域名就是 https://domain:7443 如果计算节点和管理节点不在同一台服务器上,即可监听 443 端口。 https://domain

0x03 END

配置到这里,云帮 https 已经配置完成了。如果后期有什么问题,可以回帖或相关群组里反馈。

1116 次点击
所在节点    问与答
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/351800

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX