改自我自己的博客之前发布的一篇原创文章
我们在访问网站的时候,经常会发现访问的是https协议,而不是http协议,比如百度网站
百度网站的安全证书
点证书,就可以看到证书的详细信息
百度证书信息
如果我们自己也想拥有网站的安全证书该如何操作呢?以下以CentOS8_1905、NGINX1.6.1环境下搭建的网站为例,进行说明
首先,我们需要访问https://www.freeforssl.com申请免费90天的SSL证书,虽然网站有到期通知的功能,但留下EMAIL地址也没通知过,所以就不用寄希望于网站通知了,自己大概记着点儿日期就行了。
sslforfree网站
填上你自己的域名后点击Create Free SSL Certificate 开始生成域名证书的过程,第一步是验证域名
验证域名方式
介绍两种我用过的方法,一是点击手动验证(Manual Verification)
手动验证方式
点击 Download File #1 ,下载 cHl713SqMK9EUg2mn0vTf6XPJNJd18Upamw5iEVjBQ8 文件上传到自己的服务器上的.well-known目录中,完成后,点击如上第5项验证,如果弹出下载框,就证明配置没有问题。.well-known这个目录如没有需要自己建立。
第二种方法就是选择DNS手动验证,现在我们申请完域名后,域名机构会给你一个用户名和密码及登录地址用于管理域名,如果我们可以自主管理域名,就用这种方法,点击后,网站提示你增加一个TXT类型的记录,TTL值设为1,这样会使验证速度加快。我这里就不贴图了,其实和手动验证方法大同小异。
点击Download SSL Certificate 下载安全证书,如果验证过去了,会弹出验证成功创建SSL证书界面
创建SSL证书界面
创建成功后,会出现如下界面
成功生成的证书
会有三个文本框,不用复制黏贴,因为网站下方提供这三个证书文件的下载
下载生成的证书文件
点击 Download All SSL Certificate Files ,会下载一个ZIP文件,解压缩后就是如上三个文件
三个证书文件
至此,最关键的SSL证书文件就获取到了。把这三个文件上传到服务器上。NGINX配置如下(部分)
listen 443 ssl;
server_name 1.cn;
ssl on;
ssl_certificate /etc/1.cn/fullchain.crt;
ssl_certificate_key /etc/1.cn/private.key;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
其中 fullchain.crt 需要你下载的两个crt文件合并起来
# cat certificate.crt > fullchain.crt
# cat ca_bundle.crt >> fullchain.crt
这里需要注意的是用如上命令,fullchain.crt文件中,上述两个crt文件连接的部分是连着的,我们需要把这个文件连接部分改成如下这个样子
连接部分要换行
然后重新启动NGINX
# systemctl restart nginx.service
防火墙请放开443端口,如需要可以关闭80端口访问。
验证SSL证书是否配置正确
网站成功应用SSL证书
网站使用免费SSL证书搞定,一把免费的安全锁。
,