全网最全的Nginx 配置SSL证书教程

一、背景介绍

域名、SSL证书、服务器我们公司都用的是非中国大陆的,主要是为了避开备案、审核等繁琐过程。

  • 域名:Godaddy平台。
  • SSL证书:Godaddy平台。
  • 服务器:香港阿里云,系统为:CentOS Linux release 7.6.1810 (Core) 。
  • WEB服务器:采用Nginx 部署。

二、购买SSL证书

SSL证书我购买的是Godaddy UCC/SAN SSL证书,可以配置5个域名。

SSL证书购买界面

购买完后在你的Godaddy管理平台就能看到你购买的证书,然后操作界面去配置你的域名

购买到的SSL证书

配置域名时有两种方式,方式一(也是默认方式)是通过界面输入你要配置的主域名,以及4个备域名(SAN),即使你现在不够4个备域名配置也没关系,以后可以继续加的,放心配置即可。

输入域名点击提交后,界面上会显示生成了两个文件:csr、private-key,点击保存按钮可以将这两个文件以txt文件的格式保存到本地:generated-csr.txt、generated-private-key.txt。在后面的配置中,可以直接将generated-private-key.txt后缀名改成.key,变成generated-private-key.key,作为SSL的私钥文件使用。

但配置完nginx的ssl_certificate、ssl_certificate_key后重启nginx时,有可能会保存不成功,出现以下错误信息

[emerg] SSL_CTX_use_PrivateKey_file("/etc/nginx/ssl/myxxxxgame201904.key") failed (SSL: error:0906D06C:PEM routines:PEM_read_bio:no start line:Expecting: ANY PRIVATE KEY error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)

原因是.key文件的编码有问题,需要将编码格式由UTF-8改成ANSI

iconv -c -f UTF8 -t ASCII generated-private-key.key >> generated-private-key.key

方式二(选择右边的方式二上传csr)是先在你服务器生成.csr和.key文件,然后将.csr内容拷贝到界面的配置输入框中,本文主要介绍用方式二来进行配置。

一开始我是用方式一做的,没有成功(应该是防火墙的问题),然后想删除证书重新进行配置,所以进行了revoke(永久删除)操作,一操作完,发现刚花了1700RMB买的SSL证书不见了,吓出一身冷汗,最后还是通过联系客服找了回来,联系客服可以扫描Godaddy的微信公众号,客服会通过微信的方式和你进行沟通,Godaddy的客服响应速度非常快,态度也非常好,个人的体验可以给满分,给Godaddy点个赞,Godaddy比国内的某些平台售后体验好很多。给各位的建议是,千万不要手贱进行revoke操作!

三、生成 NGINX CSR(证书签名申请)

Godaddy 官网上有相关的操作文档可以进行参考

Godaddy SSL 证书 帮助

Godaddy 生成 NGINX CSR

3.1 连接到服务器

通过 SSH 连接至您的服务器

3.2 生成.csr、.key的文件

首先第一步先登录自己的服务器,然后在自己的服务器上生成私钥和.csr的文件。

openssl req -new -newkey rsa:2048 -nodes -keyout 您的域名.key -out 您的域名.csr

用您保护的域名替换您的域名。 例如,如果您的域名是 coolexample.com,您可以键入 coolexample.key 和 coolexample.csr。

3.3 输入申请的信息
输入申请的信息

国家代码

以下是我填写的信息,部分敏感信息我用test替代

Country Name (2 letter code) [XX]:MO

State or Province Name (full name) []:Macao

Locality Name (eg, city) [Default City]:Macao

Organization Name (eg, company) [Default Company Ltd]:Go MACAO

Organizational Unit Name (eg, section) []:IT

Common Name (eg, your name or your server's hostname) []:www.test.com

Email Address []:test@126.com

Please enter the following 'extra' attributes

to be sent with your certificate request

A challenge password []:test_pwd

An optional company name []:www.test2.com,www.test3.com,www.test4.com

其中www.test.com是你要配置的主域名,下面的test2,test3,test4是备域名(我买的这SSL证书可以配置5个域名)。

3.4 复制CSR

在文本编辑器中打开 CSR,然后复制所有文本到Godaddy管理平台SSL配置的界面。

复制CSR

点击【保存】按钮,然后再点击最下面的【提交所有已保存的更改】

提交所有已保存的更改

如果【提交所有已保存的更改】按钮一直为灰色不可点击,可以尝试换一个浏览器操作,我用google浏览器不行,换成Safari就可以了。

3.5 等待证书审核

提交之后Godaddy会对我们的证书进行审核,审核通过或就会颁发证书,这个审核时间非常短,两分钟之内就能审核完成。

四、安装 & 配置证书

4.1 下载证书文件
下载

下载列表里没有Nginx的选项,我们选择【其他】进行下载即可

下载

下载的证书文件有三个,其中两个.crt文件,需要通过cat 命令将这两个文件合并成一个.crt文件(后面会讲到),一个.pem文件,这个文件我们用不到。

下载的证书文件
4.2 上传证书文件到服务器

CentOS 7 上的 NGINX: 安装证书

在服务器上去配置证书。你把下载的东西解压,会发现一个随机数.crt,一个随机数.pem。这个两个的文件是一样的,再一个gd_开头的.crt的文件。只要2个.crt的文件就好了。你把这连个上传到服务器上,然后通过命令合并成一个文件。

cat f84e19a2f44c6386.crt gd_bundle-g2-g1.crt >> coolexample.crt

再去Nginx配置文件中配置就好了。这个时候有最开始生成的.key文件(私钥)和一个合并之后.crt文件(证书)。

4.3 Nginx配置
server{
  listen 80;
  server_name test.com  www.test.com;
  return 301 https://$host$request_uri;

}

server{
  listen 443 ssl;
  server_name test.com  www.test.com;

  ssl_certificate /etc/nginx/conf.d/cert/test.crt;
  ssl_certificate_key /etc/nginx/conf.d/cert/test.key;

  location /{
    root /data/pc/test/dist;
    index index.html;
    try_files $uri $uri/ /index.html;
}

配置完后重启nginx,就可以用https访问了,同时,.crt和.key文件可以在不同目录,不一定非要在一个目录里。

五、巨坑-开防火墙

正常的话,执行完以上的操作就完成了SSL的配置,就已经可以用https来访问了。但我执行完以上操作后发现https一直是失败的,而且我也确定在阿里云的ECS安全组已经开放了80和443端口,最后找到原因是防火墙的问题。

5.1 检查防火墙端口
firewall-cmd --list-ports

看看输出有没有80/tcp与443/tcp

5.2 允许TCP协议下的 80,443 端口 暴露到互联网
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent
firewall-cmd --reload

至此,SSL的配置工作已经全部结束了,虽然我用的是Godaddy平台的SSL,同理,其他平台的SSL配置也是类似。

最后给大家送波福利

阿里云折扣快速入口

阿里云折扣快速入口
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342