在服务器上启用HTTPS的详细教程

现在,你应该能在访问https://konklone.com的时候,在地址栏里看到一个漂亮的小绿锁了,因为我把这个网站换成了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.com)。然后选择一个你可以收到邮箱的邮箱地址。

他们会给你发送一个验证码,你可以把它输入到文本框中来验证你的域名。

 生成证书

现在 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.com.csr

回到 StartSSL 的控制面板并单击 “Certificates Wizard” 标签, 然后在下拉列表里选择 “Web Server SSL/TLS Certificate”.

由于我们已经生成了自己的私钥, 所以你可以在此单击 “Skip”.

然后, 在文本框内粘贴入我们之前生成的 .csr 文件里面的内容.

如果一切正常的话, 它就会提示你说已经收到了你发出的证书签发请求.

现在, 选择你之前已经验证过的计划使用证书的域名.

它会要求你添加一个子域, 我给自己的添加的是 “www”.

它会要求你进行确认, 如果看上去没错的话, 单击 “Continue”.

注意: 在你等待通过邮件获得许可的那儿, 你有可能会遇到一个 "需要额外的验证!" 的步骤, 第一次的时候我没有遇到, 但是第二次的时候遇到了, 然后我的许可在大概30分钟左右被批准, 一旦经过许可, 你需要去单击 "Tool Box" 标签页并通过 "Retrieve Certificate" 来获取你的证书.

然后应该会是这样 — 你的证书将出现在一个文本域里面供你去复制并粘贴到一个文件里去, 给这个文件随便起个你想叫的名字就行, 但是在本指南接下来的部分里将以 mydomain.com.crt 这个名字去引用它(译者注, 原文为 asmydomain.com.crt, 参照下文 mydomain.com.crt 名称来看, 应为as后未加空格导致的拼写错误).

在nginx中安装证书

首先, 确认443端口在你的web服务器中已经打开。许多web托管已经默认为你打开了该端口。如果你使用Amazon AWS,你需要确在你的实例安全组中443端口是开放的。

下一步,我们将要创建web服务器要使用的“证书链”。它包含你的证书和StartSSL中介证书(将StartSSL的跟证书包含进来不是必要的,因为浏览器已经包含了该证书)StartSSL下载中介证书:

wget http://www.startssl.com/certs/sub.class1.server.ca.pem

然后将你的证书和他们的证书连接起来:

cat mydomain.com.crt sub.class1.server.ca.pem > unified.crt

最后,告诉你的Web服务器你的统一证书和你的解密密钥。 我使用nginx——下面是你需要的nginx的最要配置。它使用301永久重定向将所有的HTTP请求从定向为HTTPS 请求,然后指引服务器使用证书要密钥。 
 

代码如下:

server {
    listen 80;
    server_name konklone.com;
    return 301 https://$host$request_uri;
}
 
server {
    listen 443 ssl;
    server_name konklone.com;
 
    ssl_certificate /path/to/unified.crt;
    ssl_certificate_key /path/to/my-private-decrypted.key;
}
 
# for a more complete, secure config:
#   https://gist.github.com/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 库里面,并放一个说明文本文件来描述每个文件以及创建该文件的程序或者命令。

您应当也备份您的认证证书,您用这些证书在 StartSSL 上登录。StartSSL 的 FAQ 页面 已经说明 — 它是您从自己的浏览器中导出的一个包含了证书和密钥的 .p12 文件。

(0)

相关推荐

  • apache https配置详细步骤讲解

    SSL: SSl是为Http传输提供安全的协议,通过证书认证来确保客户端和网站服务器之间的数据是安全.也就是说在SSL下http传输是安全的,我们成为 https. 配置过程如下: 步骤一:安装apache,使其支持SSL,并安装php 1.安装配有SSL模块的apache,apache_2.2.8-win32-x86-openssl-0.9.8g 2.配置apache以支持SSL:打开apache的配置文件conf/httpd.conf 1)LoadModule ssl_module modu

  • Flex httpservice返回值类型和处理

    采用BlazeDS的Remote Object好处是显而易见的,只需要维护后端server部分的java对象结构即可,flex前段采用<mx:RemoteObject>的destination索引即可(简单的配置即可).但是坏处就是对于其他接入方式支持不了,同时对于前台显示方式也有所限制了. 采用http service的方式,可能会浪费一部分xml解析的时间,损失一部分效率(当前flex前端也不得不额外多出很多object的构造).但是通用性将得到保证. 最终还是决定采用最原始的http s

  • 在服务器上启用HTTPS的详细教程

    现在,你应该能在访问https://konklone.com的时候,在地址栏里看到一个漂亮的小绿锁了,因为我把这个网站换成了HTTPS协议.一分钱没花就搞定了. 为什么要使用HTTPS协议: 虽然SSL并不是无懈可击的,但是我们应该尽可能提高窃听成本 加密通讯不应心存侥幸,所有连接都应被加密 福利: 使用了HTTPS之后,如果网站的访客是从其他已经使用了HTTPS的网站上跳转过来,你就能在Google Analytics中获取更完整的来源信息(比如Hacker News). 本文将为您说明,如何

  • 云服务器centos8安装oracle19c的详细教程

    因为云服务器的centos是没有图形界面的,所以安装比较麻烦,刚好19c有本地rpm的安装方法,所以推荐用rpm安装. 首先到官网下载rpm包,然后上传到服务器.官网需要先注册账号,而且因国情原因下载很慢,我下载传到网盘了. 链接: https://pan.baidu.com/s/1VypTTrd9zpiLzw1_zV8pVw 提取码: sexh 上传到服务器的两个rpm文件,第一个是数据库安装包,第二个是安装数据库的准备环境,安装的时候先安装第二个. 一.用yum安装准备环境配置: 在安装之前

  • Ubuntu 18.04上安装 phpMyAdmin的详细教程

    我们将安装 phpMyAdmin 在 Ubuntu18.04 上配合 Apache 一起工作. 在安装 phpMyAdmin 之前需要已经安装了LAMP栈并提供了web页面. 如果没有安装可以参照 Ubuntu 18.04上安装Apache,MySQL,PHP 来先安装. 1. 安装 phpMyAdmin 让我们从更新包列表开始,并在Ubuntu 18.04上安装phpMyAdmin.下面我们有两个用&&分隔的命令.第一个命令将更新包列表,以确保您获得phpMyAdmin的最新版本和依赖项

  • 在VMware上 安装 centos8的详细教程

    centos官网地址 https://www.centos.org/ 首先下载好自己需要的文件 开始安装 安装过程比较多,很多都是直接点击下一步即可,这里只说一些需要注意的地方 首先第一步这里要选择自定义安装,典型安装暂时不支持centos8 这里选择稍后安装操作系统 由于VMware Workstation 现在还没有直支持安装centos8,所以这里选择red hat enterprise linux 8 64位 选择自己的安装位置 后面的很多这里根据自己的需求选择,大部分可以直接下一步就行

  • Hbuilder连远程接服务器上传代码的图文教程

    1.打开Hbuilder编辑器,菜单-工具-插件安装-选择FTP-安装 2.在自己项目右键-部署-运行web部署向导-选中FTP/SFTP/FTPS-下一步,按要求填写相关信息,最后确定. 以上这篇Hbuilder连远程接服务器上传代码的图文教程就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

  • Ubuntu16.04上安装CUDA9.0 详细教程

    前言: 本篇文章是基于安装CUDA 9.0的经验写,CUDA9.0目前支持Ubuntu16.04和Ubuntu17.04两个版本,如下图所示(最下面的安装方式我们选择第一个,即runfile方式): 大家可以先将CUDA文件下载下来,但是最好不要急于安装,一定要先将NVIDIA给出官方指导手册仔细看一下,然后再找几篇好的博客看一下,大致了解一下CUDA的安装过程,对安装过程中可能出现的问题要大致有一个了解,不到万不得已不要重装系统. 安装建议: 1)去官网下载CUDA的同时,一定要找份相应官方的

  • 在Apache服务器上安装SSL支持的教程

    今天我会讲述如何为你的个人网站或者博客安装SSL 证书,来保护你的访问者和网站之间通信的安全. 安全套接字层或称SSL,是一种加密网站和浏览器之间连接的标准安全技术.这确保服务器和浏览器之间传输的数据保持隐私和安全.它被成千上万的人使用来保护他们与客户的通信.要启用SSL链接,Web服务器需要安装SSL证书. 你可以创建你自己的SSL证书,但是这默认不会被浏览器所信任,要解决这个问题,你需要从受信任的证书机构(CA)处购买证书,我们会向你展示如何获取证书并在apache中安装.生成一个证书签名请

  • 在Windows服务器上启用TLS 1.2及TLS 1.2基本原理介绍

    首先在这个网站上测试一下自己的服务器究竟处于什么水平. https://www.ssllabs.com/ssltest/ 测试结果显示是支持SSL3.0的并且不支持TLS 1.2.证书使用SHA1签名算法不够强.这点比较容易接受,因为Windows服务器默认并没有开启TLS1.2. 要提高服务器的评级,有3点需要做. 使用SHA256签名算法的证书. 禁用SSL3.0,启用TLS1.2 禁用一些弱加密算法. 由于目前服务器使用的证书是近3年前购买的,正好需要重新购买,顺便就可以使用SHA256签

  • 在 Django/Flask 开发服务器上使用 HTTPS

    使用 Django 或 Flask 这种框架开发 web app 的时候一般都会用内建服务器开发和调试程序,等程序完成后再移交到生产环境部署.问题是这些内建服务器通常都不支持 HTTPS,我们想在开发的时候就能够使用和测试 HTTPS,不想还没测试就部署到生产环境,所以我们需要内建服务器能支持 HTTPS. 这个问题可以通过一个外部程序 stunnel 来解决,stunnel 的作用是通过 OpenSSL 库对 TCP 会话进行加密,建立起一个安全通道,保护没有加密功能或未加密的程序.其主要功能

  • 在服务器上启用HTTP公钥固定扩展的教程

    公钥固定(Public Key Pinning)是指一个证书链中必须包含一个白名单中的公钥,也就是说只有被列入白名单的证书签发机构(CA)才能为某个域名*.example.com签发证书,而不是你的浏览器中所存储的任何 CA 都可以为之签发.本文讲述了这种机制的背景知识,并提供了 Apache. Lighttpd 和 NGINX 上的配置范例. HTTP 公钥固定扩展 用你使用的银行做个例子,它一直使用 CA 公司 A 为其签发证书.但是在当前的证书体系下,CA 公司 B.CA 公司 C 和 N

随机推荐