分类 标签 存档 友链 关于我 订阅 搜索

如何正确的导入证书并使用 https

372 浏览

二话不说,进入正题!

http 和 https 是什么

HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的 HTTP 通道,简单讲是 HTTP 的安全版。即 HTTP 下加入 SSL 层,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。 它是一个 URI scheme(抽象标识符体系),句法类同 http: 体系。用于安全的 HTTP 数据传输。https:URL 表明它使用了 HTTP,但 HTTPS 存在不同于 HTTP 的默认端口及一个加密 / 身份验证层(在 HTTP 与 TCP 之间)。这个系统的最初研发由网景公司 (Netscape) 进行,并内置于其浏览器 Netscape Navigator 中,提供了身份验证与加密通讯方法。现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。

网景在 1994 年创建了 HTTPS,并应用在网景导航者浏览器中。 最初,HTTPS 是与 SSL 一起使用的;在 SSL 逐渐演变到 TLS 时,最新的 HTTPS 也由在 2000 年五月公布的 RFC 2818 正式确定下来。
它是由 Netscape 开发并内置于其浏览器中,用于对数据进行加密和解密操作,并返回网络上传送回的结果。HTTPS 实际上应用了 Netscape 的安全套接层(SSL)作为 HTTP 应用层的子层。(HTTPS 使用端口 443,而不是像 HTTP 那样使用端口 80 来和 TCP/IP 进行通信。)SSL 使用 40 位关键字作为 RC4 流加密算法,这对于商业信息的加密是合适的。HTTPS 和 SSL 支持使用 X.509 数字认证,如果需要的话用户可以确认发送者是谁。
也就是说它的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性,凡是使用了 https 的网站,都可以通过点击浏览器地址栏的锁头标志来查看网站认证之后的真实信息,也可以通过 CA 机构颁发的安全签章来查询 。

--- 以上是度娘的话 ---

配置证书

我用的是 wdcp 垃圾面板,况且 wdcp 网上很多错误教程,我就演示一下 wdcp 双引擎加证书吧!

打开 Xshell5 连接到服务器(其他 ssh 都行)

执行

nano /www/wdlinux/nginx/conf/vhost/此处一般为你的域名.conf

        listen 443 ssl;
        ssl_certificate /www/ssl/你的域名_bundle.crt;
        ssl_certificate_key /www/ssl/你的域名.key;
        ssl_session_timeout 5m;

接着在指定位置放进证书即可!

遇到的问题

这可能也是最认真说(WATER!W-A-T-E-R!)的事情了。。。

出现不信任或不安全的证书

领完证书后会有三个文件,两个 crt 文件和一个 key 文件,key 直接命名为 你的域名. key 上传到上述目录即可。

用记事本打开两个 crt,将其中一个的内容复制到另一个(另一个证书初始内容不变),最后命名为 你的域名_bundle.crt 并上传到上述指定路径。

typecho 主题 css 无法加载

解决方法:在根目录的 config-inc.php 文件内新开一行,加入以下代码

/** 载入https支持 */
define('__TYPECHO_SECURE__',true);

图片导致小红锁消失

推荐使用 yotuku.cn 提供的图床服务,链接前改为 https 即可!

多说导致小红锁消失

首先,咱们需要多说的 embed.js 这个文件,地址在 http://static.duoshuo.com/embed.js,下载到本地后上传服务器,在 typecho 主题配置中填写你 embed.js 的 https 的地址。没有配置的在 header.php 或 footer.php 或 comments.php 或 comment.php 寻找 embed.js,改为你 embed.js 的 https 地址!

多说头像导致小红锁消失

网上有很多 nginx 配置文件反代(反向代理)多说头像的,非常麻烦,其实我们只要一个 php 文件就能搞定!

根目录新建一个名叫 avatar.php 的文件,内容为

<?php
ob_start();
$src = $_GET['s'];
$src = preg_replace('/http:\/\/.+\.gravatar\.com/', 'http://cn.gravatar.com', $src);
$timeout = stream_context_create(array(
 'http' => array(
  'timeout' => 1.0
 )
));
$data = file_get_contents($src, 0, $timeout);
if ($src != 'null') {
 header('Content-Type:image/png');
 if (substr($data, 0, 3) === "\xFF\xD8\xFF" || substr($data, 1, 3) === "\x50\x4E\x47") {
  echo $data;
 } else {
  echo file_get_contents(dirname(__FILE__) . "/none.jpg", 0, $timeout);
 }
} else {
 echo file_get_contents(dirname(__FILE__) . "/none.jpg", 0, $timeout);
}

然后在根目录放这张图片,这句话有超链接喔!自己找一下,百度图片搜索默认头像,然后命名为 none.jpg 放在根目录。

打开 embed.js,搜索

avatarUrl: function(e) {
                return e.avatar_url || rt.data.default_avatar_url
            }

替换为

avatarUrl: function(e) {
                return 'https://你的域名/avatar.php?s='+e.avatar_url || 'https://你的域名/avatar.php?s='+nt.data.default_avatar_url
            }

很简单吧!(至少比那些忙着搭建镜像还必须要 nginx 的好多了!)

泡泡表情七牛导致小黄锁消失

改成阿里云 oss 或者腾讯云 cos 就可以啦!(这一段特别 WATER!W-A-T-E-R!)

网易云音乐导致小黄锁消失

yodubgm 最新版已经修复该问题

总结

对于 https,个人博客是完全没必要的,不过为了那可爱的小红锁 n(≧▽≦)n,哈哈!
现在,google 对 https 的网站收录好得多,并且没有 https 的网站 chrome 浏览时会出现 “不安全” 字样,所以 https 还是有必要的,不过我没有条件,买的虚拟主机不支持 https。

评论  
留下你的脚步
推荐阅读