乐趣区

常用的Nginx/Apache引擎服务器配置HTTPS SSL证书示范

昨天我们看到百度发布 ” 百度烽火算法升级 ”,提到网站如果被劫持或者拦截可能会降低网站的权重和排名等问题。这使得我们网站需要使用 HTTPS SSL 证书来减少被拦截劫持的风险。其实在早些时候我们已经看到很多浏览器都强制要求网站使用 SSL 证书,如果不使用的会被提示不安全网站 URL。这次机遇百度文章发布之后,可以看到大家应该还在犹豫的话会新增 SSL 证书实现 HTTPS 访问。

目前,大部分网站都会采用的是 NGINX、APACHE 等 WEB 架构,所以我们只需要学习这两个架构技术就可以。这里我们需要注意的,SSL 证书的安装分两种,一种是我们服务器自带的一键安装免费 SSL 证书。比如 let’s encrypt 证书是免费的。对于个人网站或者小型网站是可以使用的,而且大部分浏览器也是支持的。但是作为商业网站,我们总不能去使用免费证书吧。所以如果是购买第三方的付费证书,我们需要做的就是配置到服务器中。
在这篇文章中,笔者将会分享在常规的 NGINX、APCHE 中如何配置 SSL 证书。其实配置 SSL 证书不难的,只要我们认真看下过程就可以。如果我们个人网站可以使用免费证书,一般 LAMP 或者 LNMP 脚本都是自带免费证书的。具体可以参考:
1、LNMP 环境一键安装免费 Let’s Encrypt SSL 证书
2、宝塔面板不同 PHP 版本、伪静态设置且一键免费安装 Let’s Encrypt
但是,如果我们是购买的付费证书则不可以这么自动化安装 SSL,我们需要手工安装。
第一、NGINX WEB 引擎安装 SSL 证书
在当前网站下服务器配置文件的.conf 文件中添加。
server {
listen 443;
server_name www.domain.com; #填写绑定证书的域名
ssl on;
ssl_certificate 1_www.domain.com_bundle.crt;
ssl_certificate_key 2_www.domain.com.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;# 按照这个套件配置
ssl_prefer_server_ciphers on;
location / {
root html; #站点目录
index index.html index.htm;
}
}

安装完毕之后,我们需要命令检查是否生效。
nginx -t

检测没有报错重启 NGINX。
service nginx reload

重启 NGINX 后生效。
第二、Apache WEB 引擎安装 SSL
我们需要先在 Apache 根目录下 conf/httpd.conf 文件,找到 #LoadModule ssl_module modules/mod_ssl.so 和 #Include conf/extra/httpd-ssl.conf,去掉前面的 #号注释;编辑 Apache 根目录下 conf/extra/httpd-ssl.conf 文件。
修改如下内容:
<VirtualHost www.domain.com:443>
DocumentRoot “/var/www/html”
ServerName www.domain.com
SSLEngine on
SSLCertificateFile /usr/local/apache/conf/2_www.domain.com_cert.crt
SSLCertificateKeyFile /usr/local/apache/conf/3_www.domain.com.key
SSLCertificateChainFile /usr/local/apache/conf/1_root_bundle.crt
</VirtualHost>

配置完成后,重新启动 Apache 就可以使用 HTTPS 网址访问。相对来说好像 NGINX 比较简单一些。
第三、实例参考安装 SSL 过程
1、购买证书后合并证书
我们在购买证书后会看到.crt 和.ca-bundle 文件,需要将这 2 个文件合并到一个文件.crt 中。
2、上传证书
我们需要将上面的 CRT 文件和 KEY 文件上传到网站服务器目录中,这个具体放到哪里没事。因为我们可以在引用的时候调用对应自己的路径。
3、引用 CONF 文件路径
listen 443 ssl http2;
ssl_certificate /usr/local/nginx/conf/ssl/ 网站域名.crt;
ssl_certificate_key /usr/local/nginx/conf/ssl/ 网站域名.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_timeout 10m;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_buffer_size 1400;
add_header Strict-Transport-Security max-age=15768000;
ssl_stapling on;
ssl_stapling_verify on;

这里我们将配置文件贴到 conf 文件中,然后检测 Nginx,后没有问题就重启生效。
4、收尾工作
如果我们需要强制 HTTP 跳转至 HTTPS,则需要在 conf 配置文件中设置 301 强制跳转。
这样,我们才可以完成整个的 SSL 证书安装,是不是也不是很难?
本文可以参考的文献:
1、申请腾讯云免费 DV SSL 证书及 Apache/Nginx/IIS/Tomcat 证书安装
2、手动配置安装 SSL 证书实现 HTTPS 加密网址

退出移动版