美文网首页“云大物移智农”专题
阿里云服务器使用免费的 CA 证书部署 HTTPS

阿里云服务器使用免费的 CA 证书部署 HTTPS

作者: Tolecen | 来源:发表于2017-09-28 10:41 被阅读895次

    本文示例服务器环境:

    CentOS 7.2  Apache 2.4  PHP 5.6

    如果服务器环境不一样,可能会有出入。

    1. 阿里云申请免费 CA 证书

    如下图购买免费 CA 证书,没什么过多解释了。

    购买成功之后会在证书控制台看到补全证书信息的链接,点击去补全即可,如下图:

    如果选择了“证书绑定的域名在【阿里云的云解析】产品中...”那个选项,是代表要绑定的域名是在当前申请证书的这个阿里云账户下,如果不在的话,则需要自己去域名管理处添加一条 TXT 的域名解析记录,如下图:

    记录类型,主机记录,记录值都在审核进度里显示,填到域名解析里即可。

    域名解析填写完成之后,点击上图最下面右侧的“检查配置”,如果左侧显示配置没问题了,就正式提交审核了。

    审核完成后对应的证书的状态会变为“已签发”,如下图:

    已签发之后,就可以点击右侧的下载按钮下载证书,去服务器配置了。

    2. 服务器配置 CA 证书

    Apache 服务器配置

    首先下载证书,如下图:

    下载证书之后,放到 Apache 安装根目录(/etc/httpd)下,可以直接在服务器上使用wget下载,也可以下载到本地,使用 SCP 上传到阿里云服务器:

    scp Downloads/21427xxxx63xxx1.zip root@xx.1xx.xx6.xxx:/etc/httpd

    接下来就和阿里云的指南不一样了。

    下面这两行你会发现 httpd.conf 里没有,因为 CentOS 已经集成了 openssl,我们要做的是手动安装 mod_ssl 模块。

    安装 mod_ssl 模块命令如下:

    yum install mod_ssl

    安装完成之后,编辑 ssl.conf 文件:

    vim /etc/httpd/conf.d/ssl.conf

    按下图配置这四个位置:

    如果网站的默认目录有改过,记得在这个文件里改一下 443 端口对应的网站默认目录和域名。

    然后重启 Apache:

    systemctl restart httpd

    至此大功告成。

    Apache 下 HTTP 默认转发到 HTTPS

    如果想要 80 端口的 http 访问也转发到 https,打开Apache/conf/httpd.conf,找到 #LoadModule rewrite_module modules/mod_rewrite.so 去掉#号,打开重定向支持,然后找到你网站目录的<Directory>段,修改其中的 AllowOverride None 为 AllowOverride All,然后重启 Apache 。

    在你网站目录下放一个.htaccess文件。

    编辑器打开.htaccess文件,写入如下规则:

    RewriteEngine on

    RewriteCond %{SERVER_PORT} !^443$

    RewriteCond %{REQUEST_URI} !^/tz.php

    RewriteRule (.*) https://%{SERVER_NAME}/$1 [R]

    解释:

    %{SERVER_PORT} —— 访问端口

    %{REQUEST_URI} —— 比如如果url是 http://localhost/tz.php,则是指 /tz.php

    %{SERVER_NAME} —— 比如如果url是 http://localhost/tz.php,则是指 localhost

    以上规则的意思是,如果访问的url的端口不是443,且访问页面不是tz.php,则应用RewriteRule这条规则。这样便实现了:访问了http://localhost/index.php或者http://localhost/admin/index.php等页面的时候会自动跳转到https://localhost/index.php或者https://localhost/admin/index.php,但是访问http://localhost/tz.php的时候就不会做任何跳转,也就是说http://localhost/tz.phphttps://localhost/tz.php两个地址都可以访问。

    Nginx 服务器配置

    如果没有使用虚拟机,则按照阿里云上的教程配置即可。即

    如果使用了虚拟机,则在对应虚拟机配置文件上添加以下红色语句即可。

    server {

    listen 80;

    listen 443 ssl;

    server_name pastdust.com www.***.com;

    root /www/web/pastdust_com/public_html;

    index index.html index.php index.htm;

    error_page 400 /errpage/400.html;

    error_page 403 /errpage/403.html;

    error_page 404 /errpage/404.html;

    ssl_certificate cert/214356952770832.pem;

    ssl_certificate_key cert/214356952770832.key;

    ssl_session_timeout 5m;

    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

    ssl_prefer_server_ciphers on;

    location ~ \.php$ {

    fastcgi_pass 127.0.0.1:9000;

    fastcgi_index index.php;

    include fcgi.conf;

    }

    include rewrite/***.conf;

    }

    Nginx 下 HTTP 转发到 HTTPS

    网站强制访问https模式,将以下的跳转代码添加到当前网站所有使用的伪静态规则conf文件中,即可实现所有的http访问都跳转到https访问,并且是继承目录的,具体实现方法就是把http模式访问301重定向到https模式。

    if ($server_port = 80) {

    return 301 https://$server_name$request_uri;

    }

    if ($scheme = http) {

    return 301 https://$server_name$request_uri;

    }

    完。

    相关文章

      网友评论

        本文标题:阿里云服务器使用免费的 CA 证书部署 HTTPS

        本文链接:https://www.haomeiwen.com/subject/rmbojxtx.html