- 业务场景
因安全要求,对外只能暴露80 443端口 ,而且一旦一个用了https 其调用的其他http接口也都需要https,导致证书需求量很多, 业务场景需要给别人部署服务器
目前的证书都是在腾讯云上申请的, 一个账号只能申请20个(可能是50个)证书, 明显不够用, 要不就多搞几个腾讯云账号 要不就想其他办法搞证书
- 用freessl申请免费证书 目前没限制说一个账号限制申请多少个证书 https://freessl.cn/
- 部署一个应用到服务器 保证ip+端口可以访问到
2. 解析一个域名到服务器 运维在管理这些 我们的域名是在 https://www.dns.com/ 上购买的
解析好后 命令行 ping下是否解析到你的服务器ip
3. 打开 https://freessl.cn/ 输入你刚刚解析的域名
输入邮箱 CSR生成 选择一键生成 然后下载安装keymanager
注册keymanager后选择域名服务商 我们是用的dns.com 点击下面链接获取秘钥 填写完密保问题后就会给一个key一个secret 填入下面
4. 然后点击一键申请 成功后会有一条记录
点击右边的操作 查看详情 => 查看证书 =>导出证书 选择证书你要部署的服务器平台后就可导出了 我们用的nginx
导出到桌面后解压有2个文件
5. 配置nginx
找到nginx配置文件存放的路径 一般是/etc/nginx 不知道可以查下nginx安装在哪
whereis nginx
创建一个配置文件 域名.conf
server { listen 80; listen 443 ssl; server_name 你的域名.xyz www.你的域名.xyz; if ($server_port !~ 443){ return 307 https://$host$request_uri; } ssl_certificate /usr/local/nginx/ssl/你的域名.xyz_chain.crt; #你的证书上传到这个路径 ssl_certificate_key /usr/local/nginx/ssl/你的域名.xyz_key.key; #你的证书上传到这个路径 gzip on; gzip_proxied expired no-cache no-store private no_last_modified no_etag auth; gzip_types *; gzip_vary on; location / { #root /usr/src/gameclient/; #index index.html index.htm; proxy_pass http://10.0.1.5:23232/; #建议程序只监听内网IP端口 由nginx做转发 上面的步骤1 只是为了测下保证ip+端口可以正常访问 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
重新加载nginx
nginx -s reload
浏览器输入域名访问下 看看是否会跳转https