在服务器上启⽤HTTPS的详细教程
为什么要使⽤HTTPS协议:
虽然SSL并不是⽆懈可击的,但是我们应该尽可能提⾼窃听成本
加密通讯不应⼼存侥幸,所有连接都应被加密
福利:使⽤了HTTPS之后,如果⽹站的访客是从其他已经使⽤了HTTPS的⽹站上跳转过来,你就能在Google
Analytics中获取更完整的来源信息(⽐如Hacker News)。
本⽂将为您说明,如何通过开启您⽹站上的HTTPS协议来为构建和谐、安全的互联⽹添砖加⽡。尽管步骤有些多,但是每个步骤都很简单,聪明的你应该能在1个⼩时之内搞定这个事情。
概要: ⽬前想在 web 上使⽤ HTTPS 的话, 你需要获得⼀个证书⽂件, 该证书由⼀个受浏览器信任的公司所签署. ⼀旦你获得了它, 你就在你的 web 服务器上指定其所在的位置, 以及与你关联的私钥的位置, 并开启 443 端⼝准备使⽤. 你不需要是⼀个专业级软件开发⼈员来做这个, 但是你需要熟练使⽤命令⾏操作, 并能熟练的配置你操控的服务器.
⼤部分的证书都是要钱的, 但是我听从了 Micah Lee 的建议后⽤了 StartSSL. 那也是 EFF 正在使⽤的, ⽽且他们针对个⼈的基础型证书是免费的. (他们会要求你去⽀付⼀个更⾼级的证书如果你的站点实际上是商业站点的话.) 值得注意的是他们的⽹站在⼀开始使⽤的时候很难⽤ — 尤其是如果你对于潜藏在 SSL 幕后的概念和术语还很陌⽣的话(就像我⼀样). 幸运的是, 其实并不像想象中的那么难, 只是会有很多细微的步骤⽽已.
下⾯, 我们将⼀步步的从注册开始直到创建属于你的证书. 我们也会覆盖在 nginx 环境下的安装知识, 但是你可以在任何你希望使⽤的 web 服务器上使⽤该证书.
他们会通过email发给你个验证码。在这期间不要关闭选项卡或浏览器 , 所以你只要保持打开状态,知道获得验证码并贴上它。
等待⼏分钟就能获得整数了。⼀旦通过申请,他们会发送⼀封带有特殊连接和验证码的email给你
完成之后会给你⼀个私⼈密钥,在他们的服务器上⽣成的私⼈密钥,但这不是你创建SSL 证书的密钥.他们⽤这个私⼈密钥⽣成⼀个单独的"认证证书",以后你可以⽤它来登录StartSSL的控制⾯板,下⾯你将
要为你的⽹站创建⼀个整数了。
最后他们会叫你安装证书
在你的浏览器上安装验证证书
要是你⽤的的Chrome 你将会在浏览器头看到下⾯信息
再次,这只是证明你在登录StartSSL 以后通过你的邮件⾥的地址跳转到这个页⾯
现在,我们需要使得StartSSL相信我们拥有⾃⼰的域名,我们想要为他⽣成⼀个新的证书。从控制⾯板中,点击“Validations Wizard”,然后在下拉表单中选择”Domain Name Validation“选项。
输⼊你的域名。
接下来,你要选择⼀个email地址,StartSSL将要⽤它来核实你的域名地址。正如你所见的,StartSSL将会相信你是拥有这个域名的,如果你能⽤域名控制 webmaster@,postmaster@, orhostmaster@或者是你的email地址已被列为域名注册⼈信息的⼀部分(就我⽽⾔,就是当前的这个konklone@gmail)。然后选择⼀个你可以收到邮箱的邮箱地址。
他们会给你发送⼀个验证码,你可以把它输⼊到⽂本框中来验证你的域名。
⽣成证书
现在 StartSSL知道你是谁了,知道了你的域名,你可以⽤你的私⼈密钥来⽣成证书了。
这时StartSSL能为你⽣成⼀个私⼈密钥— 在他们常见问题中(FAQ)像你保证他们只⽣成⾼质量的随机密钥,并且以后不会作为其他的密钥 — 你也可以⾃⼰创建⼀个,很简单。
这将会引导你通过命令⾏创建via。当你选择 StartSSL的引导,你可以按引导步奏进⾏备份,在你为域名申请证书的地⽅。
打开终端,创建⼀个新的 2048-bit RSA 密钥
openssl genrsa -aes256 -out my-private-encrypted.key 2048
会让你输⼊⼀个密码. 选择⼀个,并记住它 .这会产⽣⼀个加密的私钥,如果你需要通过⽹络转移你的密钥,就可以⽤这个加密的版本..
下⼀步是将其解码, 从⽽通过它⽣成⼀个“证书签发请求”. 使⽤如下命令来解码你的私钥:
openssl rsa -in my-private-encrypted.key -out my-private-decrypted.key
然后, ⽣成⼀个证书签发请求:
openssl req -new -key my-private-decrypted.key -out mydomain.csr
回到 StartSSL 的控制⾯板并单击 “Certificates Wizard” 标签, 然后在下拉列表⾥选择 “Web Server SSL/TLS Certificate”.
由于我们已经⽣成了⾃⼰的私钥, 所以你可以在此单击 “Skip”.
然后, 在⽂本框内粘贴⼊我们之前⽣成的 .csr ⽂件⾥⾯的内容.
如果⼀切正常的话, 它就会提⽰你说已经收到了你发出的证书签发请求.
现在, 选择你之前已经验证过的计划使⽤证书的域名.
它会要求你添加⼀个⼦域, 我给⾃⼰的添加的是 “www”.
它会要求你进⾏确认, 如果看上去没错的话, 单击 “Continue”.
注意: 在你等待通过邮件获得许可的那⼉, 你有可能会遇到⼀个 "需要额外的验证!" 的步骤, 第⼀次的时候我没有遇到, 但是第⼆次的时候遇到了, 然后我的许可在⼤概30分钟左右被批准, ⼀旦经过许可, 你需要去单击 "Tool Box" 标签页并通过 "Retrieve Certificate" 来获取你的证书.
然后应该会是这样 — 你的证书将出现在⼀个⽂本域⾥⾯供你去复制并粘贴到⼀个⽂件⾥去, 给这个⽂件随便起个你想叫的名字就⾏, 但是在本指南接下来的部分⾥将以 这个名字去引⽤它(译者注, 原⽂为 , 参照下⽂ 名称来看, 应为as后未加空格导致的拼写错误).
在nginx中安装证书
⾸先, 确认443端⼝在你的web服务器中已经打开。许多web托管已经默认为你打开了该端⼝。如果你使⽤Amazon AWS,你需要确在你的实例安全组中443端⼝是开放的。
下⼀步,我们将要创建web服务器要使⽤的“证书链”。它包含你的证书和StartSSL中介证书(将StartSSL的跟证书包含进来不是必要的,因为浏览器已经包含了该证书)StartSSL下载中介证书:
wget www.startssl/certs/sub.class1.server.ca.pem
然后将你的证书和他们的证书连接起来:
sub.class1.server.ca.pem >
最后,告诉你的Web服务器你的统⼀证书和你的解密密钥。我使⽤nginx——下⾯是你需要的nginx的最要配置。它使⽤301永久重定向将所有的HTTP请求从定向为HTTPS 请求,然后指引服务器使⽤证书要密钥。
复制代码代码如下:
server {
listen 80;
server_name konklone;
return 301 $host$request_uri;
}
server {
listen 443 ssl;
server_name konklone;
ssl_certificate /path/;
ssl_certificate_key /path/to/my-private-decrypted.key;
}
# for a more complete, secure config:
# gist.github/konklone/6532544
你可以获得⼀个更全⾯的nigix配置,他打开了 SPDY, HSTS, SSL session resumption, 和 Perfect Forward Secrecy. Qualys' SSL 实验室提供了完美的 SSL 测试⼯具,你可以通过它看到你正在做的事情.
现在, 检验你对nginx的配置是正确的 (这也检验密钥和证书⼯作正常):
sudo nginx -t
然后启动 nginx:
sudo service nginx restart
稍等⽚刻,在你的浏览器中测试。如果进展顺利,会在你的浏览器中出现
混合内容警告
如果你的⽹站在https协议中运⾏,你要确保所有链接资源 — 图⽚,样式表CSS, JavaScript等,都是HTTPS协议链接.如果你不这样做,⽤户的浏览器将⽆法正常访问。⽐较新的⽕狐浏览器,将确保不安全的内容出现在⼀个安全页⾯。
幸运的是⼏乎每⼀个主要服务代码都会嵌⼊⼀个https版本,⼤多数情况下它会⾃动处理(包括 Google Analytics and Typekit). 你应该为其他⼈考虑⼀些个别的情况。
备份您的密钥和证书
不要忘记备份您的 SSL 证书,和它的加密私钥。我把它们放在⼀个私有的 git 库⾥⾯,并放⼀个说明⽂本⽂件来描述每个⽂件以及创建该⽂件的程序或者命令。ssl协议未开启的危害
您应当也备份您的认证证书,您⽤这些证书在 StartSSL 上登录。StartSSL 的 FAQ 页⾯已经说明 — 它是您从⾃⼰的浏览器中导出的⼀个包含了证书和密钥的 .p12 ⽂件。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论