本文最后更新于 2018-12-11【1955 天前】,文中所描述的信息可能已发生改变,请谨慎使用。如有问题或建议,欢迎在文章底部留言参与讨论!

鉴于 https 已经成为主流,Google 也力推 https 网页,从 Chrome 69 开始,所有 https 网页将不再标示为安全;相对的,用户在 http 网页输入资料时,Chrome 就会显示红色的不安全的标示。所以呢,给自己的网站开启 https 还是挺有必要的,加个小绿锁也是挺好看的呀。

https 的好处是通过信息加密,完整性校验以及身份验证,可以有效防止 http 存在的信息窃听,信息篡改以及信息劫持等风险。至于说三次握手影响速度,影响服务器性能啥的,我想说,对于个人博客这种小量极的访问量而言,这点影响几乎可以视为零。

什么是 SSL

SSL 的全名是 Secure Sockets Layer,即安全通讯端层,简而言之,这是一种标准的技术,用于保持网际网路连线安全以及防止在两个系统之间发送的所有敏感资料被罪犯读取及修改任何传输的资讯,包括潜在的个人详细资料。两个系统可以是伺服器与用户端(例如购物网站与浏览器),或者伺服器至伺服器(例如,含有个人身份资讯或含有薪资资讯的应用程式)。

这样做是为了确保使用者与网站、或两个系统之间传输的任何资料保持无法被读取的状态。此技术可使用加密演算法以混淆输送中的资料,防止骇客在资料透过连线发送时读取资料。此资讯可能是任何敏感或个人资讯,包括信用卡号与其他财务资讯、姓名与地址。

TLS (Transport Layer Security,传输层安全性)是更新、更安全的 SSL 版本。我们仍将安全性凭证称为 SSL,因为这是较常用的词汇。现在已经发展到 TLS 1.3。

HTTPS (Hyper Text Transfer Protocol Secure,超级文字传输协议安全) 会在网站受到 SSL 凭证保护时在网址中出现。该凭证的详细资料包括发行机构与网站拥有人的企业名称,可以透过按一下浏览器列上的锁定标记进行检视。

上述介绍来自于某 SSL 证书签发机构

SSL 证书

配置 https 首先要有个 SSL 证书,SSL 证书可以简单分为自签和他签。自签证书是指的是自己签发给自己的 SSL 证书,通过 OpenSSL 即可实现。 当然,除了几个拥有自签证书的资格外,这样的证书显然是不会被浏览器信任的,也就无法开启小绿锁,这种证书也就适合在进行网站调试时使用。 对于网站而言,更多的还是使用第三方签发的 SSL 证书。一般的 SSL 证书都是收费的,但各大服务商提供一年的免费单域名证书,也有 Let's Encrypt 这种连泛域名,多域名都完全免费的证书,强烈推荐后者,可以通过 acme.sh 实现自动续签,常见面板如宝塔,cpanel 里都有相关的配置模块,非常方便使用。

服务器配置

这里介绍两种,一种是 nginx 环境,一种是 Apache 环境
首先呢,要在配置文件里指明 SSL 证书的私钥和公钥文件的地址,然后再设置 https 访问,推荐设置为 http 自动跳转到 https

Apache 配置 https

启用 https

  1. 开启 SSL 模块并启用 SSL 站点,命令行执行:

    a2enmod ssl
    a2ensite default-ssl
  2. /etc/apache2/ports.conf 文件里设置监听 https 443 端口: Listen 443;
  3. 配置虚拟主机,编辑 /etc/apache2/sites-enabled/default-ssl.conf 文件,加入证书对应的主机头:ServerName extend.me;
  4. 配置SSL证书:

    ServerName example.com
    SSLEngine on
    SSLCertificateFile    /etc/ssl/certs/example_com.crt  ## 你的证书
    SSLCertificateKeyFile /etc/ssl/private/example_com.crt.key  ## 你的证书私钥
    SSLCertificateChainFile /etc/ssl/certs/server-ca.crt       ## 根证书
  5. 重启 Apache:service apache2 restart

强制跳转

如果需要 http 自动跳转 https,则在站点配置文件 .htaccess 中加入如下 rewrite 规则即可:

RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteRule (.*) https://%{SERVER_NAME}/$1 [R]

Nginx 配置 https

配置文件 server 模块修改:

server {  
listen 80;          # 原有 80 端口
listen 443 ssl;     # 开启 443
server_name example.com; # 站点域名
ssl on;
ssl_certificate         /etc/ssl/private/example_com.crt;  # 证书
ssl_certificate_key     /etc/ssl/private/example_com.key;  # 私钥
... # 其他配置
}

强制 https

如果需要强制 https,则需要将 80 端口的访问强制跳转到 443,需要将 80 和 443 端口分开:

server {  
        listen 80;
        server_name     example.com;
        return 301      https://$server_name$request_uri;
}
server {
listen 443 ssl;     # 开启 443
server_name example.com; # 站点域名
ssl on;
ssl_certificate         /etc/ssl/private/example_com.crt;  # 证书
ssl_certificate_key     /etc/ssl/private/example_com.key;  # 私钥
... # 其他配置
}

修改配置文件后,记得重启 nginx 服务:service nginx restart

小绿锁

完全的小绿锁还需要保证网站里的所有请求都是走的 https,没有 http,如果你的网址还没有开启小绿锁,快去改造吧!

文章目录
文章目录


推荐使用:阿里云 云翼计划学生优惠、ECS、轻量应用等产品与服务【 点击注册

本文作者:Quanyin Tang

本文链接:为你的网站开启 https,展现小绿锁吧 - https://www.imtqy.com/enable-https.html

版权声明:如无特别声明,本文即为原创文章,仅代表个人观点,版权归 Quanyin 所有,未经允许禁止转载,经授权转载请注明出处!