澳门新萄京官方网站-www.8455.com-澳门新萄京赌场网址

澳门新萄京官方网站:Https内部机制基础知识,可

2019-08-24 作者:www.8455.com   |   浏览(125)

这篇文章首发于我的个人网站:听说 - https://tasaid.com/,建议在我的个人网站阅读,拥有更好的阅读体验。

互联网权威机构 - CA 机构,又称为证书授权 (Certificate Authority) 机构,浏览器会内置这些"受信任的根证书颁发机构" (即 CA)。

Let’s Encrypt(https://letsencrypt.org )是可以签发免费SSL/TLS证书的CA机构,它是为普及HTTPS而发起的,推动了基础DV SSL证书的普及。其证书已经被MozillaGoogleMicrosoftApple等主流浏览器支持,只需要web服务器配置好HTTPS证书,浏览器会在加载时验证web服务器HTTPS证书是否有效。
使用Let’s Encrypt一个很重要的理由是免费,避免ISP劫持;还有申请速度快、无需注册账户等优点。在对比了众多免费CA后,Let’s Encrypt是比较方便和理想的,它提供了基础DV SSL证书,只提供了数据加密;不验证身份,无法向用户证明网站的所有者。但即使这样也满足了基本需要了。

SSL证书,用于加密HTTP协议,也就是HTTPS。随着淘宝、百度等网站纷纷实现全站Https加密访问,搜索引擎对于Https更加友好,加上互联网上越来越多的人重视隐私安全,给网站添加SSL证书似乎成为了一种趋势。

这篇文章与 博客园 和 Segmentfault 共享。

数字证书

提及 HTTPS ,就会听到大家说需要证书才能部署,那么什么是证书呢?

因为互联网不安全,公匙也是信息的一部分,也是会有被篡改的风险的。所以引入了互联网权威机构

  • CA 机构,又称为证书授权 (Certificate Authority) 机构,浏览器会内置这些"受信任的根证书颁发机构" (即 CA)。

服务端向权威的身份鉴定 CA 机构申请数字证书,CA 机构验证了网站之后,会把网站录入到内部列表,采用 Hash 把服务端的一些相关信息生成摘要,然后 CA 机构用自己的私匙,把服务端的公匙和相关信息一起加密,然后给申请证书的服务端颁发数字证书,用于其他客户端 (比如浏览器) 认证这个网站的公匙。

客户端通过服务端下发的证书,找到对应的 CA,然后向 CA 验证这个证书是否有效,CA 验证通过之后,下发服务端的公匙。

因为 CA 是权威并且可信的,所以客户端 (浏览器) 信任 CA,而 CA 又信任经过认证的服务端 ,所以客户端 (浏览器) 也信任这个服务端,这就是信任链 (Chain Of Trust)。

而 CA 颁发的数字证书,一般包含这些信息:

澳门新萄京官方网站 1

简单来说:为了保证公匙是安全的,所以通过数字证书验证公匙。

不推荐使用沃通 (WoSign)证书。

Let's Encrypt

前端开发QQ群:377786580
注意:该文章后续有更新,请在 https://tasaid.com 阅读更新

加密通信

一条完整的HTTPS请求应该是这样的:

  1. 客户端 (浏览器) 发起 HTTP 请求,请求连接服务端,发送支持的加密通信协议 (和版本),并且生成一个随机数,后续用于生成"对话密钥"。

  2. 服务端确认加密通信协议 (和版本),同时也生成一个随机数,后续用于生成"对话密匙",并且将 CA 颁发的数字证书,一起发送给客户端。

  3. 客户端收到数字证书后,检测内置的"受信任的根证书颁发机构",查看解开数字证书的公匙是否在。

  4. 如果解开数字证书的公匙存在,则使用它解开数字证书,得到正确的服务器公匙,同时再次生成一个随机数,用于服务器公匙加密,并发送给服务器。

  5. 此时本地和服务器同时将三个随机数,根据约定的加密方法进行加密,各自生成本次会话的所使用的同一把 "会话密匙" 。

  6. 到这里,认证阶段已经完毕,数据传输从 非对称加密 换成了 对称加密 (因为考虑到性能),接下来所有的数据传输都是使用HTTP协议进行传输,只不过使用了 "会话密匙" 来加密内容。

见下图:

澳门新萄京官方网站 2

PS:
目前主流的SSL证书主要分为DV SSLOV SSLEV SSL

Let's Encrypt是国外一个公共的免费SSL项目,由 Linux基金会托管,它的来头不小,由Mozilla、思科、Akamai、IdenTrust和EFF等组织发起,目的就是向网站自动签发和管理免费证书,以便加速互联网由HTTP过渡到HTTPS,目前Facebook等大公司开始加入赞助行列。

这篇文章主要讲述 IIS 8 部署免费 HTTPS 。 HTTPS 是互联网 web 大势所趋。TaSaid 最近把机房从香港迁移到青岛,趁着这次机会,观望并折腾了几天,在迁移中顺便完成了 HTTPS 的部署。

有哪些免费证书

这里只介绍在 TaSaid.com 部署 HTTPS 中尝试的免费证书方案,部署在 IIS8 上。

  • Let's Encrypt

  • 沃通 (wosign) (不推荐)

本来在 TaSaid.com 迁移中尝试部署过沃通 (wosign) 的签发的免费证书,但是后来发现了 Mozilla 官网( firefox/火狐 背后的开源组织 ) 里列出了 沃通的一系列可疑行为和问题,并且沃通 "秘密" 收购 StartCom(著名的免费 HTTPS 证书 StartSSL 即其旗下产品)行为可疑, Mozilla 基金会正在考虑对沃通以及 StartCom 这两个 CA 机构一年内新签发的所有 SSL 证书进行封杀。

我在上一篇文章 《从 HTTP 到 HTTPS - 什么是 HTTPS》 中指出 CA 机构应该是是权威和可信的,但由于沃通当前的陷入的一系列丑闻,信任度降低,所以暂时不推荐使用沃通。并且沃通官网已暂时关闭免费 HTTPS 证书申请。

这一段内容发表于2016年10月5日,如果您在未来某天阅览到这个内容,请即时更新了解沃通最新的动态。

所以我们这次仅推荐 Let's Encrypt。

DV SSL
最简易,只提供数据加密功能,不验证身份。目前免费SSL证书都是这个类型。
OV SSL
提供加密功能,会验证身份,可信度更高。收费。
EV SSL
安全级别、可信度最高的SSL证书,用于金融证券、银行、网上支付网站,强调网站安全和企业形象。收费最贵。

Let's Encrypt已经得了 IdenTrust的交叉签名,这意味着其证书现在已经可以被Mozilla、Google、Microsoft和Apple等主流的浏览器所信任,你只需要在Web服务器证书链中配置交叉签名,浏览器客户端会自动处理好其它的一切,Let's Encrypt安装简单,未来大规模采用可能性非常大。

这篇文章收录在《Said - 从HTTP到HTTPS》系列:

Let's Encrypt

推荐 Let's Encrypt 理由:

  • 由 ISRG(Internet Security Research Group,互联网安全研究小组)提供服务,而 ISRG 是来自于美国加利福尼亚州的一个公益组织。Let's Encrypt 得到了 Mozilla、Cisco、Akamai、Electronic Frontier Foundation 和 Chrome 等众多公司和机构的支持,发展十分迅猛。

  • 极速申请 - 只要认证的网站通过验证,当时即可颁发证书

  • 免费和访问速度兼得

  • 对于域名所有权的验证,支持两种方式:放临时文件进行验证、查询 whois 给域名所有人发邮件验证

  • 无需注册账户

  • 关键是稳定,背后的支持的组织很强大

缺点:

  • 一次只能颁发3个月有效期的证书,到期之后需要自己再续上 (仍然是免费的),这点维护起来比较麻烦,不过我们可以使用工具自动续期。

  • 不支持通配符泛域名 (*.demo.com),所以在申请认证是时候,要把域名都 301 跳转到证书里包含的域名上,不然浏览器会弹证书错误。

流程

默认 Let's Encrypt 申请证书比较繁琐,所以我们在 windows 下使用工具 letsencrypt-win-simple 进行部署,简单方便快捷。

  1. 下载 letsencrypt-win-simple

  2. 在服务器中打开CMD,运行letsencrypt-win-simple

  3. 在CMD中根据简单的命令,输入要认证的网站域名和网站文件夹

  4. letsencrypt-win-simple 自动验证域名所有权

  5. 验证通过后即时颁发证书

  6. 部署

Let’s Encrypt工具有很多,不同的平台使用不同的工具和方法。windows平台推荐使用letsencrypt-win-simple(https://github.com/Lone-Coder/letsencrypt-win-simple/releases )申请证书,简单快速。
下面是实践中,windows server使用letsencrypt-win-simple客户端部署HTTPS部署中碰到的问题和解决方案放在了文章末尾。

Let's Encrypt 的最有价值的贡献是它的 ACME 协议,第一份全自动服务器身份验证协议,以及配套的基础设施和客户端。这是为了解决一直以来HTTPS TLS X.509 PKI 信任模型,即证书权威(Certificate Authority, CA)模型缺陷的一个起步。

  • 从 HTTP 到 HTTPS - 什么是 HTTPS
  • 澳门新萄京官方网站,从 HTTP 到 HTTPS - IIS 部署免费 HTTPS
  • 从 HTTP 到 HTTPS - 网站部署 HTTPS 中需要做的事情

1.准备工作

经过我的测试,推荐通过

有哪些免费证书

这里只介绍在 TaSaid.com 部署HTTPS中尝试的免费证书方案,部署在 IIS8 上。

  • Let's Encrypt
  • 沃通 (wosign) (不推荐)

本来在 TaSaid.com 迁移中尝试部署过沃通 (wosign) 的签发的免费证书,但是后来发现了 Mozilla 官网( firefox/火狐 背后的开源组织 ) 里列出了 沃通的一系列可疑行为和问题,并且沃通 "秘密" 收购 StartCom(著名的免费 HTTPS 证书 StartSSL 即其旗下产品)行为可疑, Mozilla 基金会正在考虑对沃通以及 StartCom 这两个 CA 机构一年内新签发的所有 SSL 证书进行封杀。

我在上一篇文章 《从 HTTP 到 HTTPS - 什么是 HTTPS》 中指出 CA 机构应该是是权威和可信的,但由于沃通当前的陷入的一系列丑闻,信任度降低,所以暂时不推荐使用沃通。并且沃通官网已暂时关闭免费 HTTPS 证书申请。

这一段内容发表于2016年10月5日,如果您在未来某天阅览到这个内容,请即时更新了解沃通最新的动态。

所以我们这次仅推荐 Let's Encrypt。

1.1 设置DNS

在DNS服务器设置正确的域名(二级域名、三级域名都可以)

申请免费SSL证书步骤的详细介绍:

Let's Encrypt

推荐 Let's Encrypt 理由:

  • 由 ISRG(Internet Security Research Group,互联网安全研究小组)提供服务,而 ISRG 是来自于美国加利福尼亚州的一个公益组织。Let's Encrypt 得到了 Mozilla、Cisco、Akamai、Electronic Frontier Foundation 和 Chrome 等众多公司和机构的支持,发展十分迅猛。
  • 极速申请 - 只要认证的网站通过验证,当时即可颁发证书
  • 免费和访问速度兼得
  • 对于域名所有权的验证,支持两种方式:放临时文件进行验证、查询 whois 给域名所有人发邮件验证
  • 无需注册账户
  • 关键是稳定,背后的支持的组织很强大

缺点:

  • 一次只能颁发3个月有效期的证书,到期之后需要自己再续上 (仍然是免费的),这点维护起来比较麻烦,不过我们可以使用工具自动续期。
  • 不支持通配符泛域名 (*.demo.com),所以在申请认证是时候,要把域名都 301 跳转到证书里包含的域名上,不然浏览器会弹证书错误。

1.2 下载运行letsencrypt-win-simple:

下载最新版本letsencrypt-win-simple(https://github.com/Lone-Coder/letsencrypt-win-simple/releases )
服务器上解压letsencrypt-win-simple,解压后文件结构如下:

澳门新萄京官方网站 3

letsencrypt-win-simple.V1.9.1文件结构

一、登录 TOOLS" 按钮,选择在线方式申请免费SSL证书。

流程

默认 Let's Encrypt 申请证书比较繁琐,所以我们在 windows 下使用工具 letsencrypt-win-simple 进行部署,简单方便快捷。

  1. 下载 letsencrypt-win-simple
  2. 在服务器中打开CMD,运行letsencrypt-win-simple
  3. 在CMD中根据简单的命令,输入要认证的网站域名和网站文件夹
  4. letsencrypt-win-simple 自动验证域名所有权
  5. 验证通过后即时颁发证书
  6. 部署

1.3 letsencrypt-win-simple运行环境

双击letsencrypt.exe,运行需要.NET运行环境,点击安装就可以了:

澳门新萄京官方网站 4

安装

第一步、登录

使用 letsencrypt-win-simple 进行自动化认证和部署

下载最新版 letsencrypt-win-simple:

澳门新萄京官方网站 5

本人在2016年9月15日下到的最新版是:letsencrypt-win-simple.V1.9.1.zip。

2.IIS部署HTTPS站点

说明:这里也提供下载软件,安装在本地PC上,运行的办法。但由于这是国外网站,下载速度较慢,而且在线直接申请很简单,不推荐使用本地安装软件的方式。

自动化认证

在服务器解压 letsencrypt-win-simple.V1.9.1 得到文件夹,打开CMD进入到该文件夹下。

第一次运行命令会连接远程服务器更新,并且会让你是否输入邮箱订阅认证信息,可以忽略,然后让做个选择(忘记什么选择了),选择Y即可,选择N则会中断。

部署单个域名

  • 输入以下命令

    letsencrypt.exe --accepttos --manualhost 你的域名 --webroot 你的网站物理路径(wwwroot路径)
    
  • letsencrypt-win-simple.V1.9.1 会自动生成临时文件并放到网站根目录,然后会让 Let's Encrypt 服务器会访问这个文件, 用于验证这个网站是否属于你。

  • 如果验证不通过,是因为 IIS 需要修改一些配置,具体参见下文的详细说明。
  • 验证通过后会实时颁发证书,并且 letsencrypt-win-simple.V1.9.1 会自动把证书添加到服务器中,然后直接在 IIS 中进行HTTPS部署即可。

部署多个域名

  • 输入命令 letsencrypt.exe --san
  • 输入 M ,表示此次需要认证多个域名
  • 输入网站的 host
  • 输入要认证的多个域名,用 , 号分隔,比如tasaid.com,www.tasaid.com,m.tasaid.com
  • 输入网站物理路径,比如 C:UserslinkFlyDocumentsSaidSaidTemp
  • letsencrypt-win-simple.V1.9.1 会自动生成临时文件并放到网站根目录,然后会让 Let's Encrypt 服务器会访问这个文件, 用于验证这个网站是否属于你。
  • 如果验证不通过,是因为 IIS 需要修改一些配置,具体参见下文的详细说明。
  • 验证通过后会实时颁发证书,并且会自动把证书添加到服务器中,然后直接在 IIS 中进行HTTPS部署即可。

更多命令文档可以 参考这里。

2.1 自动化认证单个域名

在服务器上,终端cd到letsencrypt.exe文件夹,键入如下命令:

letsencrypt.exe —accepttos —manualhost pre.YourDomain.com —webroot D:ssl.api.MyHost.com

使用webroot方式申请证书
Let’s Encrypt服务器会访问命令中的服务器路径,用于验证这个网站是否属于你,成功后会生成临时的认证文件。

出现如下文字说明成功了:

澳门新萄京官方网站 6

申请成功

会将公钥和私钥放在C:UsersAdministratorAppDataRoamingletsencrypt-win-simple下,这个路径会在Nginx部署时用到。

这个过程中,如果验证不通过,是因为IIS需要修改配置,具体见附录-问题一。

二、点击“START"按钮,开始申请SSL证书

自动化认证单个域名

解压 letsencrypt-win-simple.V1.9.1 文件夹,然后点击文件夹,按住shift,再点击右键,选择在此处打开命令窗口 (即让控制台打开后直接定位到这个文件夹下)。

使用下面的命令:

letsencrypt.exe --accepttos --manualhost 你的域名 --webroot 你的网站路径(wwwroot路径)

比如 部署的命令是这样的:

letsencrypt.exe --accepttos --manualhost tasaid.com --webroot C:UserslinkFlyTest

letsencrypt-win-simple 会自动生成临时文件并放到网站根目录 (详情可以参考下一章节 自动化认证多个域名 ),然后会让 Let's Encrypt 服务器会访问这个文件, 用于验证这个网站是否属于你。

如果验证通过,直接进入本文的 部署 章节即可。如果验证不通过,是因为需要修改 IIS 的一些配置,请参考下一章节 自动化认证多个域名

2.2 部署HTTPS站点:

在Windows Server上增加站点:

澳门新萄京官方网站 7

添加网站

第二步、点击“START"按钮

自动化认证多个域名

CMD 进入 letsencrypt-win-simple.V1.9.1 文件夹,运行如下命令:

letsencrypt.exe --san

然后会弹出一坨选项:

Let's Encrypt (Simple Windows ACME Client)
Renewal Period: 60
Certificate Store: WebHosting

ACME Server: https://acme-v01.api.letsencrypt.org/
Config Folder: C:UserslinkFlyAppDataRoamingletsencrypt-win-simplehtpsacme-v01.api.letsencrypt.org
Certificate Folder: C:UserslinkFlyAppDataRoamingletsencrypt-win-simpehttpsacme-v01.api.letsencrypt.org
Loading Signer from C:UserslinkFlyAppDataRoamingletsencrypt-win-simpehttpsacme-v01.api.letsencrypt.orgSigner

Getting AcmeServerDirectory
Loading Registration from C:UserslinkFlyAppDataRoamingletsencrypt-win-simplehttpsacme-v01.api.letsencrypt.orgRegistration

Scanning IIS Sites
2: SAN - IIS Said (C:UserslinkFlyTest)
3: SAN - IIS Test (C:UserslinkFlyDemo)

W: Generate a certificate via WebDav and install it manually.
S: Generate a single San certificate for multiple sites.
F: Generate a certificate via FTP/ FTPS and install it manually.
M: Generate a certificate manually.
A: Get certificates for all hosts
Q: Quit
Which host do you want to get a certificate for:

Scanning IIS Sites 列出了在 IIS 中检测到的当前已发布的网站,然后显示了一系列指令 (W, S, F, M, A),决定你想要的操作:

  • W - 生成一个证书并通过 WebDav 来进行安装
  • S - 给 IIS 当前已经发布的所有网站都部署一个证书
  • F - 生成一个证书通过FTP、FTPS安装。
  • M - 通过配置手动生成证书
  • A - 给 IIS 当前已经发布的所有网站各自部署上对应的证书

我们这次要认证手动认证多个域名,输入命令:

M

接着出现让你输入host( Enter a host name )。 比如 http://tasaid.com 输入的是tasaid.com

然后会让你输入要认证的多个域名 (注意这些域名要可以访问的,因为一会儿会轮流访问这些域名进行验证),用,号分隔 (Enter all Alternative Names seperated by a comma:),然后我们输入需要验证的域名即可:

tasaid.com,www.tasaid.com,m.tasaid.com,wap.tasaid.com

澳门新萄京官方网站 8

接着输入站点部署的位置 (Enter a site path ),输入你的网站部署的位置即可:

C:UserslinkFlyDocumentsSaidSaidTemp

澳门新萄京官方网站 9

然后输入是否要指定使用者 (用户),输入 N。( 一旦选择了Y,会让你输入用户名和密码,证书会进行用户认证 )。

接着会在你此次认证的项目根目录下 (wwwroot) ,根据你刚才输入的域名列表,生成对应的临时认证文件, Let's Encrypt 服务器会访问这个文件,结构大概如下:

---- wwwroot(认证的网站根目录)
| -- .well-known
    | -- acme-challenge
            | -- DGz4z_A_VsgO3dilCAB8bkgurpPt-EFpLygmua3L6x8 (一个临时文件,多个域名会有多个临时文件)

澳门新萄京官方网站 10

然后 Let's Encrypt 服务器会根据刚才输入的域名列表,用 HTTP 轮流访问这些文件,注意这时候可能存在这个报错:

******************************************************************************
The ACME server was probably unable to reach http://linkflys.com/.well-known/acme-challenge/DGz4z_A_VsgO3dilCAB8bkgurpPt

Check in a browser to see if the answer file is being served correctly.

*****************************************************************************

出现这个错误表示生成的这个临时文件访问不到,验证不通过。

原因是因为 .well-know 这个文件夹带了前缀.,IIS会认为是不可识别的 MIMEType ,只需要在网站根目录下临时加上 mimeMap 配置即可:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <staticContent>
            <mimeMap fileExtension="." mimeType="text/plain" />
        </staticContent>
    </system.webServer>
</configuration>

记得验证通过后,如果你的网站不需要这个 mimeMap 配置,要记得删除。

如果验证通过,会显示下图,这时候恭喜你验证通过。

澳门新萄京官方网站 11

3.附录:

三、配置

部署

打开 IIS,选择对应的网站,右键 编辑绑定,点击 新增类型 选择https澳门新萄京官方网站:Https内部机制基础知识,可信赖又无需付费的SSL证书。,则会弹出如下界面:

澳门新萄京官方网站 12

输入要绑定的域名,然后选择颁发的证书即可。域名 日期 上午/下午这种格式就是 Let's Encrypt 此次颁发的证书。

这个时候,使用 https 协议访问你的域名就可以啦,比如:。

3.1 出现的问题一:

澳门新萄京官方网站 13

问题1

出现这个错误表示生成的这个临时文件访问不到,验证不通过。
原因是因为.well-know这个文件夹带了前缀 . ,IIS会认为是不可识别的 MIMEType ,只需要在网站根目录下临时加上 MIMEType 配置即可:

IIS上新增MIME Type方法:

澳门新萄京官方网站 14

MIME Type

配置

查看证书

3.2 出现的问题二:

澳门新萄京官方网站 15

问题2

这是域名问题,域名输错或者设置错误,需要重新检查输入的命令。

1. “在第1步”的红色提示处,输入自己的电子邮箱。这是可选项,也可以选择不输入。

在服务器中查看证书

在服务器中,Win R 打开运行,输入 MMC,打开 控制台 界面。

点击顶部菜单栏 文件,然后点击 添加/删除管理单元

弹出的窗口中,在左侧的 可用的管理单元 中点击 证书,然后点中间的 添加,会弹出如下界面:

澳门新萄京官方网站 16

选择 计算机账户,然后默认下一步完成,点击 确定,即可看到证书列表。

澳门新萄京官方网站:Https内部机制基础知识,可信赖又无需付费的SSL证书。展开 证书,再展开 中间证书颁发机构,选择 证书,即可看到 Let's Encrypt 颁发的证书:

澳门新萄京官方网站 17

  1. “在第2步”的红色提示处,输入需要Https加密访问的网址。

  2. “在第3步”的红色提示处,必须勾选"HTTP verification"。

  3. “在第4步”的红色提示处,"Accept ZeroSSL TOS"和"Accept Let's Encrypt SA(pdf)"。

  4. “在第5步”的红色提示处,点击”NEXT"按钮。

在chrome中查看证书

使用 HTTPS 访问网址,点击地址栏的小 绿锁,然后点击 详细信息,这时候会弹出 chrome 调试工具,点击 View certificate

澳门新萄京官方网站 18

就会看到证书的详细信息:

澳门新萄京官方网站 19

6. 点击”NEXT"按钮后,页面有弹窗询问你是否生成没有"www"的网址的SSL证书格式。个人建议点击“No"按钮,因为在之后的验证环节,这种模式的在线验证有可能失败。

其他

开始生成CSR

IIS 配置 web.config 实现自动 HTTPS 跳转

为了保证域名统一,将访问 http://www.tasaid.comhttp://tasaid.comhttps://www.tasaid.com 的域名都跳转到 https://tasaid.com,IIS 可以进行如下配置 (需要安装 IIS UrlRewrite 模块,代码注释是为了方便理解,部署到线上请删除中文注释):

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="HostNameRule1">
                    <match url="(.*)" />
                    <!--匹配所有条件-->
                    <conditions logicalGrouping="MatchAny">
                        <!--当不是使用https协议访问的时候-->
                        <add input="{HTTPS}" pattern="^OFF$" />
                        <!--并且访问的host不是tasaid.com这种,例如www.tasaid.com-->
                        <add input="{HTTP_HOST}" pattern="^tasaid.com$" negate="true" />
                    </conditions>
                    <!--跳转到https-->
                    <action type="Redirect" url="https://tasaid.com/{R:1}" />
                </rule>
                <rule name="HTTPS redirect">
                    <match url="(.*)" />
                    <conditions>
                        <!--当使用HTTPS协议访问-->
                        <add input="{HTTPS}" pattern="^ON$" />
                        <!--当访问 https://www.tasaid.com的时候 -->
                        <add input="{HTTP_HOST}" pattern="^tasaid.com$" negate="true" />
                    </conditions>
                    <!--跳转到HTTPS-->
                    <action type="Redirect" url="https://tasaid.com/{R:1}" redirectType="SeeOther" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

这里需要注意,想让 也可以跳转到 https://tasaid.com,在申请 HTTPS 证书的时候,要把 www.tasaid.com 这种域名也给申请上,否则浏览器会解析不出 https://www.tasaid.com,因为在进行 HTTPS 加密握手的时候就会认证失败。

7. 选择是否生成没有"www"的网址的SSL证书格式的弹窗后,开始生成CSR,如上图所示,需要等一会儿。

chrome 调试中发现 HTTPS 改动不生效

HTTPS 第一次连接域名的时候会和证书颁发机构进行 HTTPS 证书认证,后续的连接会缓存起来,清缓存就好了


这篇文章首发于我的个人网站:听说 - https://tasaid.com/,建议在我的个人网站阅读,拥有更好的阅读体验。

这篇文章与 博客园 和 Segmentfault 共享。

前端开发QQ群:377786580

CSR生成

参考和引用

  • Let's Encrypt
  • github - letsencrypt-win-simple
  • 如何看待 Mozilla 决定停止信任沃通 (WoSign) 和 StartCom 颁发的证书?
  • 屈屈 - Let's Encrypt,免费好用的 HTTPS 证书
  • 屈屈 - 开始使用 ECC 证书
  • Let's Encrypt 试用记
  • 使用 SSL For Free 產生 Let’s Encrypt SSL 憑證上傳給 IIS 站台使用
  • IIS 使用 Let’s Encrypt 的 SSL 免費憑證
  • 聊聊“沃通/WoSign”的那些破事儿

8 . 如上图所示,CSR生成后,点击“NEXT"按钮,用于生成account key

正在生成RSA Private Key.

  1. 如上图所示,又需要等一会儿,生成了下图所示的RSA Private Key. 建议点击红色方框所示的下载按钮下载已经生成RSA Private Key和CSR,以防之后验证失败或意外网络中断需要重复申请RSA Private Key和CSR。点击“NEXT”按钮进入验证环节。

四、验证

1. 进入验证页面后,根据要求使用get方式访问"

验证页面

2. 为了达到验证的目的,可以使用2种方式,即在Nginx或Apache中设置静态访问文件,

或者修改web程序。我选择修改程序,以下是node.js的程序代码的例子:

router.get('/.well-known/acme-challenge/:id', function(req, res) {

  res.send('T8YJS_____________________________7tw8r5txSg');

});


  1. 在服务器验证设置好后,在验证页面点击“NEXT”按钮进行验证。

五、 导出生成的SSL证书

导出生成的SSL证书

到了这个页面就生成了正式的SSL证书,请下载红色方块所示的证书和密钥。

注意:这个免费SSL证书有效期为90天,到期后可以免费续期,即重复这个注册过程,再次生成新的免费SSL证书。

注意:下载的证书文件的名称是"domain-crt.txt",需要修改名称为"domain.crt"。

注意:下载的密钥的名称是domain-key.txt,需要修改名称为"domain.key"。

注意:记得一定要修改这两个文件,名称无所谓,但证书文件的文件扩展名必须是".crt", 密钥的文件扩展名必须是".key"。我在这里踩了坑,没有改扩展名,造成nginx找不到这两个文件。

六、设置web服务器

我的服务器用的是nginx,nginx的配置文件"nginx.conf"的代码如下:

user nginx;

worker_processes auto;

error_log /var/log/nginx/error.log;

pid /var/run/nginx.pid;

events {

     worker_connections 1024;

}

http {

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '

                                 '$status $body_bytes_sent "$http_referer" '

                                  '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;

    tcp_nopush          on;

    tcp_nodelay        on;

    keepalive_timeout  65;

    types_hash_max_size 2048;

    include            /etc/nginx/mime.types;

    default_type        application/octet-stream;

    server {

         listen  80;

         server_name  需要访问的网址;

        rewrite ^(.*)$ permanent;

        #强制见80端口的访问转到443的加密端口

        location / {

             proxy_set_header X-Real-IP $remote_addr;

             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

             proxy_set_header Host $http_host;

             proxy_set_header X-NginX-Proxy true;

             proxy_pass ;

             proxy_redirect off;

         }

    }

    server {

        listen 443 ssl;

        server_name 需要访问的网址;

        ssl on;

        ssl_certificate 服务器存放ssl证书文件绝对路径/domain.crt;

        ssl_certificate_key 服务器存放ssl证书密钥文件绝对路径/domain.key;

        location / {

            proxy_set_header X-Real-IP $remote_addr;

            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

            proxy_set_header Host $http_host;

            proxy_set_header X-NginX-Proxy true;

            proxy_pass ;

            proxy_redirect off;

        }

    }

}


对于Apache或者IIS的设置,我不太熟悉,请大家自行百度吧。


我也研究了一下其它提供免费SSL证书网站,向大家做个介绍,仅供参考:

StartCom

StartSSL是StartCom公司旗下的SSL证书,应该算是免费SSL证书中的“鼻祖”,最早提供完全免费的SSL证书并且被各大浏览器所支持的恐怕就只有StartSSL证书了。任何个人都可以从StartSSL中申请到免费一年的SSL证书。如果你有看新闻,也许已经知道了“Mozilla正式提议将停止信任 WoSign 和 StartCom 签发的新证书”,对于StartSSL请观察事态发展后再谨慎使用。

COMODO

COMODO官网只有免费90天的SSL证书试用申请,这个COMODOPositiveSSL证书来自UK2公司,VPS.net等就是UK2公司旗下的产品。目前获取UK2提供的免费COMODO PositiveSSL不需要额外的操作,只需要你先把域名解析到UK2公司的服务器上,然后在网页上获取SSL证书并下载,最后你就可以解除域名解析,同时将下载的域名证书文件上传到服务器配置SSL即可。不过由于是UK2提供的COMODO PositiveSSL免费证书,如果你没有用他们的主机总归不知道哪一天会出问题的。

CloudFlare

CloudFlare提供的免费SSL证书是UniversalSSL,即通用SSL,用户无需向证书发放机构申请和配置证书就可以使用的SSL证书,CloudFlare向所有用户(包括免费用户)提供SSL加密功能。不过Universal SSL的服务对免费用户有限制,CloudFlare只支持扩展支持Server Name Indication(SNI)协议的现代浏览器,这意味着它不支持IE6及之前版本、运行Android 2.2或更旧版本的Android浏览器。

Wosign沃通

Wosign沃通是国内一家提供SSL证书服务的网站,其免费的SSL证书申请比较简单,在线开通,一个SSL证书只能对应一个域名,支持证书状态在线查询协议(OCSP)。不过,受“Mozilla正式提议将停止信任WoSign 和 StartCom 签发的新证书”的影响,请观察后再决定是否使用。

腾讯云

腾讯云DV SSL 域名型证书由赛门铁克提供自动审核认证,快速签发,支持自动 CSR 生成、域名身份 DNS 自动验证,一步提交申请,审核签发流程全自动。可以一键部署到腾讯云资源。需要注意的是必须使用腾讯云才能够使用DV SSL 域名型证书,腾讯云可是收费的。

360网站卫士、百度云加速与Symantec等合作推出了免费的SSL证书,其实类似于上面的腾讯云DV SSL证书,只不过360网站卫士如果要使用SSL证书必须得实名认证而且还得使用他们家的CDN。而百度云加速则只能使用百度云服务器才可以申请免费SSL证书。

本文由澳门新萄京官方网站发布于www.8455.com,转载请注明出处:澳门新萄京官方网站:Https内部机制基础知识,可

关键词: