PHP Laravel NGINX Symfony Dubbo Bootstrap Python Symfony Apache Protobuf linux Spring Django ASP Thrift Slim Typescript Docker Homestead MySQL Redis Git SVN ssh Root vim java scala sass less PHP Avro android html Golang Vue Angular React NGINX kotlin Rust Javascript

NGINX/Apache2 如何设置HTTPS链接

原创

原创不易 ~ 喜欢请点我关注

NGINXApache两个服务器鼎鼎大名无需多说,世界上绝大多数的网站基本都使用了两者其一,但NGINX由于其出色的性能,正在被越来越多的人所使用,Apache龙头老大的位置也处在了风口浪尖。

不管怎么说,两者的配置其实有很多共通之处,那么今天我们要来看一下如何使用SSL来开启网站的HTTPS连接。

这里说明一下,我们的讲解针对的是拥有机构签名的SSL证书,而非个人签名的SSL证书。
要按照文章步骤进行操作,你必须已经购买了或者拥有了机构签名的SSL证书,如果你还没有购买任何SSL服务,那么可以先移步至以下godaddy网站链接查看或购买:

https://sg.godaddy.com/zh/web-security/ssl-certificate

购买SSL服务后,我们要生成相应的证书(具体生成操作请根据你的服务商文档进行操作),通常最后我们会有类似下面列出的几个文件。

  1. domain.crt
  2. domain.key
  3. bundle.crt

第一个文件是我们的证书文件,第二个文件是我们生成证书之前生成的key。第三个文件是捆绑的中间证书。
这里说一下第三个文件。由于有些知名机构签发的证书使用了中间证书,而有些浏览器没有这些中间证书,在浏览页面的时候会报出不安全提示,所以我们需要bundle.crt这个chains文件,它包含了一系列中间证书。


有了这几个文件,我们就可以开始配置https了。

首先我们先来看Apache2的配置。

首先我们需要先开启ssl模块服务:

$ a2enmod ssl

完成之后,我们就可以开始配置vhost了。

打开我们的vhost文件,添加以下配置:

    SSLEngine On  
    SSLCertificateFile      /etc/ssl/certs/domain.crt  
    SSLCertificateKeyFile /etc/ssl/private/domain.key  
    SSLCertificateChainFile /etc/ssl/certs/bundle.crt

接下来,我们根据上面配置中的路径,将我们的证书文件上传到服务器即可。
最后,我们重启Apache2

$ sudo systemctl restart apache2

至此,Apache2的配置教程就完成了。


现在我们来看一下NGINX的配置步骤。

首先我们需要将domain.crtbundle.crt合并:

$ cat domain.crt bundle.crt > domain.chained.crt

接下来我们打开NGINX的网站配置文件,进行如下修改:

server {  
    listen  443 ssl;  
    server_name domain;  
    ssl_certificate /etc/ssl/certs/domain.chained.crt;  
    ssl_certificate_key /etc/ssl/private/domain.key;  
}

保存退出。然后我们根据上述配置中的路径,将对应证书文件上传至服务器相应位置即可。

接下来,根据NGINX官方文档的建议,我们对服务器进行优化设置。

打开/etc/nginx/nginx.conf配置文件,添加以下配置:

worker_processes auto;

http {
    ssl_session_cache   shared:SSL:10m;
    ssl_session_timeout 10m;
}

接下来,我们在相应站点的配置文件server区块中,添加以下配置:

server {
    keepalive_timeout 70;
}

完成后,我们重启NGINX

$ sudo systemctl restart nginx

这样一来,NGINX的配置就完成了。


正在加载验证码......
请先完成验证