V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
cloudL
V2EX  ›  WordPress

让自己的 Wordpres 博客完美支持 HTTPS 为什么选择 HTTPS

  •  
  •   cloudL · 2017-02-23 17:00:33 +08:00 · 2281 次点击
    这是一个创建于 2618 天前的主题,其中的信息可能已经有所发展或是发生改变。

    先说一下什么是 HTTPS ,简单的说, HTTPS 就是加了密的 HTTP 。 HTTP 是以明文方式传送数据,不支持任何方式的数据加密,如果攻击者截取了用户和服务器之间的传输文本,就可以直接读懂里面信息,甚至还可以篡改其中内容。所以 HTTP 协议并不适合传输一些敏感信息,比如信用卡号、密码等。而 HTTPS 对传输的信息进行了加密,使得信息更加安全。

    当然 HTTPS 并不仅仅用来加密网站内容,他同时可以认证网站的真实性,相信不少网友们都有不小心访问到钓鱼网站的经历,有了 HTTPS 后,浏览器就可以知道你所访问的网站是真实的还是他人伪造的,在网站打开前告诉你网站是否是安全的。

    而对于博主朋友们,选择 HTTPS 有个更重要的原因, google 和 baidu 都已经说明自己会优先展示支持 HTTPS 的网站,相信不论是谁,都希望自己的博客能排在搜索引擎的最前面吧。

    说了一堆废话,下面进入正题。

    创建 SSL 证书

    想要使用 HTTPS ,用户需要一个数字证书,来让假冒服务器无法冒充自己。关于数字证书,用户可以自己建立,也可以从网上购买,自己建立的证书适合在测试开发或个人项目使用。对于公共的网站,还是推荐去购买一个正规 SSL 服务商提供的证书( https://www.hostucan.cn/ssl )。

    这里简单介绍一下在 Linux 下用 OpenSSL 创建证书的过程:

    #用 128 位 rsa 算法生成密钥,得到 server.key 文件

    openssl genrsa 1024 > server.key

    #用上一步生成的密钥创建证书请求文件 server.csr ,这一步会提出很多问题要用户一一输入

    openssl req -new -key server.key > server.csr

    #用密钥和证书请求文件生成证书 server.crt ,-days 参数指明证书有效期,单位为天

    openssl req -x509 -days 365 -key server.key -in server.csr > server.crt

    一个创建好的证书的证书包含两部分: server.crt 和 server.key ,下面我们需要将他们添加到 Apache 设置中。

    配制 Apache 服务器

    想要在 Apache 中使用 HTTPS ,首先要开启 SSL 模块( mod_ssl ),用户可以通过 apt-get 或 yum 安装。

    安装好 ssl 模块后,修改 Apache 的设置,让原有支持 HTTP 的站点同时支持 https ,一个典型的 Apache 典型的 HTTP 配置是这样的:

    /etc/httpd/conf/httpd.conf

    <VirtualHost *:80>

    DocumentRoot /var/www/html/codlr
    ServerName www.codlr.com
    
    </virtualhost> 在它下面添加下面内容:

    <VirtualHost *:443>

    SSLEngine on
    SSLCertificateFile /etc/certs/server.crt
    SSLCertificateKeyFile /etc/certs/server.key
    DocumentRoot /var/www/html/codlr
    ServerName www.codlr.com
    <Directory /var/www/html/codlr>
        AllowOverride All
    </Directory>
    
    </virtualhost>

    设置好后别忘了重启服务器。

    WordPress 后台开启 HTTPS

    如果想要后台控制面板支持 HTTPS ,可以修改 WP-config.php ,在文件末尾加入以下两行代码: define('FORCE_SSL_LOGIN', true);

    define('FORCE_SSL_ADMIN', true);

    修改 URL 跳转

    首先不要忘记修改网站的地址,登录到 Wordpress 的后台:/wp-admin/options-general.php ,把 Wordpress 和 Site Address 换成 https 协议的。

    考虑到有些被转载到别的网站上的博文还是 HTTP 的,所以要修改代码,让原有的 HTTP 链接自动跳转为 HTTPS 。可以通过修改.htaccess 文件来达到这个目的,.htaccess 文件在网站的根目录下,在文件的 RewriteBase 下面添加下面两行代码:

    RewriteCond %{SERVER_PORT} !^443$

    RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R=301]

    更新数据库

    仅修改配置还是不够的,有些博客的文章中可能已经包含了 http 的链接,虽然已经修改了 Url 跳转,不过还是会被浏览器认为是不完全安全的网站,可以 SQL 进行字符串替换。

    UPDATE wp_posts SET post_content = replace(post_content, 'http://codlr.com','https://codlr.com');

    有的时候更换博客地址也会用到的哦。

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1014 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 19:36 · PVG 03:36 · LAX 12:36 · JFK 15:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.