windows申请免费SSL证书-Let's Encrypt


https://www.sslforfree.com/

Let’s Encrypt 项目是由互联网安全研究小组ISRG,Internet Security Research Group主导并开发的一个新型数字证书认证机构CA,Certificate Authority。该项目旨在开发一个自由且开放的自动化 CA 套件,并向公众提供相关的证书免费签发服务以降低安全通讯的财务、技术和教育成本。在过去的一年中,互联网安全研究小组拟定了 ACME 协议草案,并首次实现了使用该协议的应用套件:服务端 Boulder 和客户端 letsencrypt。

目前LE的证书已经获得了所有浏览器的信任了(XP也可以支持了),在浏览器地址栏都会显示一个绿色可信任标志,证书90天有效期我们安装后需要定时任务每月续签一次证书就好了。

目前网络上大部分的申请教程都是基于Linux的,我们这篇就是讲述如何在windows服务器申请LE证书并安装到Nginx上的,如果想在windows服务器中安装LE的证书我们先需要利用:

ACMESharp:https://github.com/ebekker/ACMESharp

ACMESharp安装

ACMESharp安装方式有两种

  1. 如果你的服务器PowerShell版本是5.0以上,以管理员权限运行打开PowerShell执行 PS> Install-Module -Name ACMESharp 来安装ACMESharp,安装过程需要看网络情况,服务器有条件的用vpn安装,没条件的多尝试几次。
  2. 如果你的服务器PowerShell版本是3.0 or 4.0的则麻烦些,先需要在powershell上安装chocolatey命令行包管理器,然后利用chocolatey安装。

在powershell中执行如下命令,安装chocolatey命令行包管理器

PS> iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))

然后执行

PS> choco install acmesharp-posh-all

 

OK,ACMESharp安装完毕我们来申请LE证书吧

管理员身份打开PowerShell

第一步: 导入ACMESharp模块

PS> Initialize-ACMEVault

第二步:初始化ACMEVault来保存和管理证书信息,第二次申请不需要

PS> Initialize-ACMEVault

第三步:在LE填写注册信息,接受注册协议

PS> New-ACMERegistration -Contacts mailto:somebody@example.org -AcceptTos

第四步:创建一个你要申请域名身份

PS> New-ACMEIdentifier -Dns myserver.example.com -Alias dns1

第五步:认证域名所有权

PS> (Complete-ACMEChallenge dns1 -ChallengeType http-01 -Handler manual).Challenge
== Manual Challenge Handler - HTTP ==
  * Handle Time:      [1/12/2016 1:16:34 PM]
  * Challenge Token:  [2yRd04TwqiZTh6TWLZ1azL15QIOGaiRmx8MjAoA5QH0]
To complete this Challenge please create a new file
under the server that is responding to the hostname
and path given with the following characteristics:
  * HTTP URL:     [http://myserver.example.com/.well-known/acme-challenge/2yRd04TwqiZTh6TWLZ1azL15QIOGaiRmx8MjAoA5QH0]
  * File Path:    [.well-known/acme-challenge/2yRd04TwqiZTh6TWLZ1azL15QIOGaiRmx8MjAoA5QH0]
  * File Content: [2yRd04TwqiZTh6TWLZ1azL15QIOGaiRmx8MjAoA5QH0.H3URk7qFUvhyYzqJySfc9eM25RTDN7bN4pwil37Rgms]
  * MIME Type:    [text/plain]
------------------------------------

如果出现如上图没有显示,执行命令

PS> (Update-ACMEIdentifier dns1 -ChallengeType http-01).Challenges | Where-Object {$_.Type -eq "http-01"}

执行完毕之后看返回结果LE的服务器在执行下一步时会访问你的这个地址:

http://myserver.example.com/.well-known/acme-challenge/2yRd04TwqiZTh6TWLZ1azL15QIOGaiRmx8MjAoA5QH0

返回的文本内容是:2yRd04TwqiZTh6TWLZ1azL15QIOGaiRmx8MjAoA5QH0.H3URk7qFUvhyYzqJySfc9eM25RTDN7bN4pwil37Rgms

.well-known文件夹在windows下可能不能直接创建,需要在命令行下创建。

IIS需要设置没有扩展名文件的MIME类型

添加

效果:

 

如果准备好了,我们继续下一步。

 

第六步:提交认证

PS> Submit-ACMEChallenge dns1 -ChallengeType http-01

提交之后我们接下来就需要等待LE服务器来验证了,我们可以通过命令:

PS> Update-ACMEIdentifier dns1
...
Status         : valid
…

检查验证状态: 

pedding 正在等待验证 

valid 验证通过 

invalid 验证失败,如果验证失败需要重新申请一次,也就是我们的第四步开始重新做一次,当然alias名称需要更换,因为已经存在记录了。

 

如果返回 valid表示验证成功后我们继续下一步。

 

第七步:创建证书申请

分别依次执行命令

PS> New-ACMECertificate dns1 -Generate -Alias cert1
PS> Submit-ACMECertificate cert1


我们通过以下来检查证书的状态:

PS> Update-ACMECertificate cert1
Id                  : 9182eb22-cd57-468e-946e-e0b0d8843906
Alias               : cert2
Label               :
Memo                :
IdentifierRef       : 198488a7-c778-488c-978b-606a0181deb9
KeyPemFile          : 9182eb22-cd57-468e-946e-e0b0d8843906-key.pem
CsrPemFile          : 9182eb22-cd57-468e-946e-e0b0d8843906-csr.pem
GenerateDetailsFile : 9182eb22-cd57-468e-946e-e0b0d8843906-gen.json
CertificateRequest  : ACMESharp.CertificateRequest
CrtPemFile          : 9182eb22-cd57-468e-946e-e0b0d8843906-crt.pem
CrtDerFile          : 9182eb22-cd57-468e-946e-e0b0d8843906-crt.der
IssuerSerialNumber  :
SerialNumber        : 00FAFC7F409C770B76EB9BA7445EC27B24494A
Thumbprint          : 9A59B855EA79B3E9DE1C14307E6A21851B3C0CE8
Signature           : 9A59B855EA79B3E9DE1C14307E6A21851B3C0CE8
SignatureAlgorithm  : sha256RSA

如果结果像以上情况则表示申请完毕,我们来下载证书文件吧。

 

第八步:下载证书文件

下载私钥: 

PS> Get-ACMECertificate cert1 -ExportKeyPEM "path\to\cert1.key.pem"

下载LE证书:

PS> Get-ACMECertificate cert1 -ExportCertificatePEM "path\to\cert1.crt.pem" -ExportCertificateDER "path\to\cert1.crt" 

下载CA中间证书: 

PS> Get-ACMECertificate cert1 -ExportIssuerPEM "path\to\cert1-issuer.crt.pem" -ExportIssuerDER "path\to\cert1-issuer.crt" 

下载IIS用的PFX文件: 

PS> Get-ACMECertificate cert1 -ExportPkcs12 "path\to\cert1.pfx" 
PS> Get-ACMECertificate cert1 -ExportPkcs12 "path\to\cert1.pfx" -CertificatePassword 'g1Bb3Ri$h' 

如果是nginx的话只需要利用到上面三个证书文件,这里有一个特殊的地方,在nginx中ssl证书是在server中加入ssl信息:

server {
    server_name www.xxx.com;
    listen 443;
    ssl on;
    ssl_certificate D://full.pem;
    ssl_certificate_key D://key.pem;
}

其中full.pem是由LE证书文件和CA中间证书合并的来的,把CA中间证书内容添加到LE证书中合并为一个full.pem文件,作为公钥,另一个就是私钥key.pem。 

配置好之后启动nginx直接在浏览器加上https访问你的域名吧!

LE证书默认有三个月的有效期,我们可以每个月通过自动脚本来定是续订一个证书,续订证书的步骤就是命令行 Import-Module ACMESharp 导入模块后重复第七部和第八步然后应用新证书。

注意:在https站点中所有的外部资源都需要通过https访问,否则会抱安全错误(图片、视频等资源可以通过http访问但是控制台会出现警告)

 

参考:https://blog.csdn.net/i348018533/article/details/50788703 

 

版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
YES开发框架
上一篇:Python windows服务报错: 1053:服务没有及时响应启动或控制请求
下一篇:JIRA密码策略:密码安全等级和规则
评论列表

发表评论

评论内容
昵称:
关联文章

windows申请免费ssl证书Let's Encrypt
windows申请免费SSL证书Let's Encrypt
SSL证书:Certify工具自动注册并管理免费Let's Encrypt Https证书
阿里云免费SSL证书申请
CentOS7 nginx SSL证书申请并自动续期
ssl-helper使用教程
windows下openssl安装,证书生成,nginx配置https以及http重定向https
javascript中let和var的区别
window server部署open VPN
微信支付:API商户证书序列号serialNo获取
微信支付:API商户证书序列号serialNo获取
SAP S4启动与停止命令
免费在线PS网站(良心推荐,真正免费
Python Windows服务
免费可商用的字体有哪些?
FTP客户端工具 WinSCP ( 推荐,免费 )
RSA PrivateKey私钥字符串转PEM格式证书
windows Nginx配置开机自启动
八个独家珍藏的「免费」设计素材网
探索 dotnet core 为何在 Windows7 系统需要补丁的原因

联系我们
联系电话:15090125178(微信同号)
电子邮箱:garson_zhang@163.com
站长微信二维码
微信二维码