LNMP进阶之SSL安全证书部署 1441次阅读 Centos • 学习归纳 2022-07-23 注:本文在原创文章https://blog.gdsdxy.fun/index.php/archives/93.html 基础上接着讲解 #LNMP进阶之SSL安全证书部署 ## 什么是SSL安全证书? SSL证书是一种数字证书,主要是给予网站HTTPS安全协议加密传输与信任的功能。 网站实现加密传输 用户通过http协议访问网站时,浏览器和服务器之间是明文传输,这就意味着用户填写的密码、账号、交易记录等机密信息都是明文,随时可能被泄露、窃取、篡改,被黑客加以利用。 网站安装SSL证书后,使用https加密协议访问网站,可激活客户端浏览器到网站服务器之间的"SSL加密通道"(SSL协议),实现高强度双向加密传输,防止传输数据被泄露或篡改。 ## 怎么区分网站有没有部署SSL证书? 最直接的例子,查看浏览器网址栏左边的提示  这是没有部署证书的例子  这是有证书但不受信任的例子(如自签证书、电脑时间不对等都有可能导致)  这是有证书且证书有效的例子 ## 部署SSL证书需要什么? 一台正常的nginx云服务器 一个固定的公网IP 一个正常解析的域名 ## 怎么部署SSL证书? 我们使用上篇文章(vhosts)的a.gdsdxy.fun网页做例子。 首先我们需要先为该域名申请ssl证书。一般域名提供商都有提供申请的免费证书的渠道。 我这里使用腾讯云举例  搜索SSL 证书  点击我的证书  点击申请免费证书  免费证书只能选择亚洲诚信(ps:免费证书有效期一年,到期前需要重新签发,重新配置)  证书绑定域名需要填写完全域名。如:a.gdsdxy.fun  选择DNS验证  走到这里,我们去到DNS解析侧  按照上图的要求,我们创建一个CNAME解析,把数据都填写进去  保存生效  回到SSL证书点击查看域名验证状态,看到此提示后稍等几分钟  即可收到此通知  回到我的证书页面  因为我们是LNMP服务器,使用Nginx,所以下载Nginx格式的证书与根证书  你应该会得到这两个压缩文件  解压得到两个文件夹下的如上文件 ## 创建证书与密钥文件 ### 创建证书  回到服务器内,进入到/etc/nginx配置目录下 我们创建一个cert目录,专门用于存放SSL证书  再在cert目录下创建任意命名的目录用以存放证书(我这里使用了域名做目录名字)  在a.gdsdxy.fun目录下,我们首先创建PEM证书文件,名字随意,注意以.pem结尾 PEM证书的格式为域名证书+根证书  打开我们下载好的域名证书文件夹,找到.crt结尾的证书文件,右键以文本文档方式打开  如无意外,我们打开应该是这样的,我们把全文复制(包括开始的虚线行和结尾的虚线行,ctrl+A)  插入到a.pem来,还没完,先回个车换行  找到我们下载的根证书,同样右键以文本文档方式打开  同样的全选复制  黏贴到我们换过行的a.pem文件中,保存并退出,证书部分完成。 ### 创建密钥文件  接着在a.gdsdxy.fun目录中创建任意名字.key文件(注意要以.key结尾)  打开我们下载好的域名证书文件夹,找到.key结尾的证书文件,同样右键以文本文档方式打开  同样复制全部内容(Ctrl+A)  插入到a.key内,保存并退出,证书与密钥文件创建完毕 ## 修改nginx相应网站配置文件  进入nginx配置文件目录   按此格式修改配置文件 ``` server { #将80端口服务独立出来 listen 80; #监听80端口 return 301 https://a.gdsdxy.fun$request_uri;#当访问80端口的时候,返回301重定向至https } server { listen 443 ssl http2; #监听https默认端口443,开启SSL证书和http2支持 server_name a.gdsdxy.fun; #修改为vhosts域名,https必须有域名才能申请证书 ssl_certificate /etc/nginx/cert/a.gdsdxy.fun/a.pem; #指定证书文件的绝对路径 ssl_certificate_key /etc/nginx/cert/a.gdsdxy.fun/a.key; #指定密钥文件的绝对路径 ssl_session_timeout 5m; ssl_protocols TLSv1.2 TLSv1.3;#支持的TLS版本 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; ssl_prefer_server_ciphers on; root /usr/share/nginx/html/web1;#指定网站的根目录,如果配置vhosts一定要注意 index index.php index.html index.htm; #设置网站的主页顺序,因为我们是php网站,所以把.php加在最前面 ``` 修改a.gdsdxy.fun网站的配置文件web1.conf $$ Ps:301转向 (或叫301重定向,301跳转)是当用户或搜索引擎向网站服务器发出浏览请求时,服务器返回的HTTP数据流中头信息 (header)中的状态码的一种,表示本网页永久性转移到另一个地址。 301重定向主要是将需要转移的网址重定向另一个新的网址上,并且是永久性转移。 $$ 最终结果如上,保存并退出  重启nginx ## 测试   浏览器输入a.gdsdxy.fun,直接解析到了https,查看SSL证书有效,证书部署成功! 最后一次更新于2022-07-23 LNMP 网页服务器
0 条评论