windows下 申请免费ssl证书的方法 (letsencrypt)(使用者备用名称(DNS))

Let’s Encrypt,官网是https://letsencrypt.org/,它是一个由各大公司赞助的公益组织;

有趋势有需求,自然也有免费可用。免费的SSL 证书中,首推就是 Let’s Encrypt。

 

这里介绍几种免费的SSL 证书申请方法:

1、发钱办理 ssl 证书,国内也有很多家这样的平台,像景安、又拍云等等,收费的,咋先不搞它;

 

2、在服务端,注意是服务端,就是你 iis 的那台机器,使用 windows power shell 执行命令来创建 ssl 证书

2.1 找到 power shell,可以直接搜索它,找不到的请度娘

2.2 最好用管理员身份打开,然后查看 power shell 的版本,查看命令:get-host

windows 下 申请免费 ssl 证书的方法 (letsencrypt)(使用者备用名称(DNS))

2.3 如果是 5.0 及以上的 执行命令:Install-Module -Name ACMESharp

2.3  如果你的服务器 PowerShell 版本是 3.0 or 4.0 的则麻烦些,先需要在 powershell 上安装 chocolatey 命令行包管理器,然后利用 chocolatey 安装

          先执行:iex ((new-object net.webclient).DownloadString(‘https://chocolatey.org/install.ps1’))

          在执行:choco install acmesharp-posh-all

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

   2.4 导入 ACMESharp 模块

         执行:Import-Module ACMESharp

   2.5 初始化 ACMEVault 来保存和管理证书信息

         执行:Initialize-ACMEVault

   2.6 在 LE 填写注册信息,接受注册协议

         执行:New-ACMERegistration -Contacts mailto:youremail@example.com -AcceptTos

         将 youremail@example.com 替换你的邮箱

   2.7 创建一个你要申请域名身份

        执行 New-ACMEIdentifier -Dns myserver.example.com -Alias dns1

        myserver.example.com 请替换为你需要申请SSL 证书的那个域名,  dns1 是别名,请替换为任意的一个别名,这个别名将用于后续申请中,用于代指你的域名。

   2.8  认证域名所有权,就是验证一下这个域名是否在当前电脑访问的通,let’s Encrypt 提供了三种验证方式:

          2.8.1 通过IIS来验证,IIS如果是 7.0 及以上版本的,则可以通过验证

                   执行:Complete-ACMEChallenge dns1 -ChallengeType http-01 -Handler iis -HandlerParameters @{ WebSiteRef = ‘Default Web Site’ }

其中’Default Web Site’ 是IIS中这个 Website 的名称

2.8.2 通过在网站指定目录下存放指定文件来验证,文件中存放指定内容

2.8.3 通过设置一个独立的二级域名来验证

这里我们不过多描述方法 2 和方法 3

如需要 http://www.cnblogs.com/denny-duan/p/apply-free-ssl-ca-win7-powershell-letsencrypt.html 这个地址里面有详细介绍

2.9  提交认证

执行:Submit-ACMEChallenge dns1 -ChallengeType http01

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

执行:Update-ACMEIdentifier dns1

windows 下 申请免费 ssl 证书的方法 (letsencrypt)(使用者备用名称(DNS))

 pedding 正在等待验证
   valid 验证通过
   invalid 验证失败,如果验证失败,请查看对应的反馈的错误,一般都是无法访问 http://myserver.example.com/.well-known/acme-challenge/2yRd04TwqiZTh6TWLZ1azL15QIOGaiRmx8MjAoA5QH0  这个地址的文件,需要配置 iis 的 mime 类型,在 mime 类型中添加一个可以访问没有后缀名的文件类型,如下图,详情清查看 http://www.hangge.com/blog/cache/detail_1560.html 。  然后需要重新申请一次,也就是从 2.7 再次开始

windows 下 申请免费 ssl 证书的方法 (letsencrypt)(使用者备用名称(DNS))

 

2.11 如果返回valid表示验证成功后我们继续下一步 创建证书申请

执行:New-ACMECertificate dns1 -Generate -Alias cert1

执行:Submit-ACMECertificate cert1

cert1 是你自己定义的证书名称

2.12 接下来,执行如下命令,更新证书

执行:Update-ACMECertificate cert1

windows 下 申请免费 ssl 证书的方法 (letsencrypt)(使用者备用名称(DNS))

 

可以看到证书的签名算法是 sha256RSA。至此,可以导出证书了

2.13 下载证书文件

下载私钥:Get-ACMECertificate cert1 -ExportKeyPEM “c:\ssl\cert1.key.pem”

下载 LE 证书: Get-ACMECertificate cert1 -ExportCertificatePEM “c:\ssl\cert1.crt.pem” -ExportCertificateDER “c:\ssl\cert1.crt”

下载 CA 中间证书:Get-ACMECertificate cert1 -ExportIssuerPEM “c:\ssl\cert1-issuer.crt.pem” -ExportIssuerDER “c:\ssl\cert1-issuer.crt”

下载IIS用的 PFX 文件 一个有密一个无密,选一个即可:

Get-ACMECertificate cert1 -ExportPkcs12 “c:\ssl\cert1.pfx”

Get-ACMECertificate cert1 -ExportPkcs12 “c:\ssl\cert1.pfx” -CertificatePassword ‘123456789’

上面的地址需要先创建哦,要不找不到路径保存,都执行后在对应的目录里面可以看到下载的 ssl 文件了。

2.14  下一步,将是安装证书了。 再 iis 里面的证书服务 里面导入证书,绑定 https 的的即可,这不再细说;

 

3  第三种方案,借住工具执行脚本命令,最快速,推荐使用

3.1 下载一个letsencrypt-win-simple的工具

这个地址有最新的版本和 source: https://github.com/Lone-Coder/letsencrypt-win-simple/releases

也可以用我云盘地址,直接下载 1.9.6 的版本:http://pan.baidu.com/s/1nveHTlJ

 

3.2 下载完之后解压运行里面的 letsencrypt.exe 打开控制台窗口,第一次运行会提示你输入一个邮箱以供后续使用

输入一个可用邮箱回车即开始注册,并问你是否同意协议

 

输入 Y 回车,邮箱注册完之后,程序会自动获取当前服务器部署的所有网站,如下:

windows 下 申请免费 ssl 证书的方法 (letsencrypt)(使用者备用名称(DNS))

 

按 N  再按 1, 再选择要生成 ssl 的域名项即可,最后配置自动更新程序,选择 y

生成的证书在 C:\Users\Administrator\AppData\Roaming\letsencrypt-win-simple\httpsacme-v01.api.letsencrypt.org 下

 

注意: 1 生成的计划任务的执行程序默认是生成证书时的 letsencrypt.exe 的路径,请到管理工具-计划任务查看相应任务属性,确认 action 的 letsencrypt.exe 路径对不对,如果移动到 其它地方了也需要进行相应修改,否则会执行失败

2 iis 需要配置 mime 类型:扩展名:.   mime 类型:application/octet-stream,添加无后缀的文件访问  ,否则验证不通过,跟上面 2.10 提到的是一样的;

3 由于 Let’s Encrypt 免费SSL 证书只有 90 天的有效期,过期需要更新,该程序会生成一个计划任务,每天上午 9 点钟运行检查过期的证书并更新。所以生成完成证书会提示你    是不是需要指定用户运行刷新证书的计划任务(会显示下次过期的时间),选择 Y,输入相应的系统登录用户名和密码即可。

 

 


N: Create new certificate
M: Create new certificate with advanced options
L: List scheduled renewals
R: Renew scheduled
S: Renew specific
A: Renew *all*
V: Revoke certificate
C: Cancel scheduled renewal
X: Cancel *all* scheduled renewals
Q: Quit

Please choose from the menu: n

[INFO] Running in Simple mode

1: Single binding of an IIS site
2: SAN certificate for all bindings of an IIS site
3: SAN certificate for all bindings of multiple IIS sites
4: Manually input host names
C: Cancel

Which kind of certificate would you like to create?: 4

Enter comma-separated list of host names, starting with the primary one: domain.com,www.domain.com,m.domain.com,en.domain.com

[INFO] Plugin Manual generated target [Manual] [4 bindings – domain.com, …]

2: www.domain.com

Choose site to create new bindings: 2

[INFO] Authorize identifier: domain.com
[INFO] Cached authorization result: valid
[INFO] Authorize identifier: www.domain.com
[INFO] Authorizing www.domain.com using http-01 validation (SelfHosting)
[INFO] Answer should now be browsable at http://www.domain.com/.well-known/acme-challenge/FbqVGhfCuB8JKPgZL6rHKt29CT4xpXlvsNxImo4v9cI
[INFO] Authorization result: valid
[INFO] Authorize identifier: m.domain.com
[INFO] Authorizing m.domain.com using http-01 validation (SelfHosting)
[INFO] Answer should now be browsable at http://m.domain.com/.well-known/acme-challenge/xVeQ6r97ft2Zu1j1toKPdaUfgIDywAS46Dfpch9WmEg
[INFO] Authorization result: valid
[INFO] Authorize identifier: en.domain.com
[INFO] Authorizing en.domain.com using http-01 validation (SelfHosting)
[INFO] Answer should now be browsable at http://en.domain.com/.well-known/acme-challenge/6Yy4deW8vta5AHOkrzgcgGORZSQYhK12kBbUZ5uXdQE
[INFO] Authorization result: valid
[INFO] Requesting certificate domain.com 2019/10/20 10:46:37 上午
[INFO] Saving certificate to C:\ProgramData\win-acme\httpsacme-v01.api.letsencrypt.org
[INFO] Installing certificate in the certificate store
[INFO] Adding certificate domain.com 2019/10/20 10:46:37 上午 to store WebHosting
[INFO] Installing with IIS…
[INFO] Updating existing https binding domain.com:443
[INFO] Adding new https binding www.domain.com:443
[INFO] Adding new https binding m.domain.com:443
[INFO] Adding new https binding en.domain.com:443
[INFO] Committing 4 https binding changes to IIS
[INFO] IIS will serve the new certificates after the Application Pool IdleTimeout has been reached.
[INFO] Uninstalling certificate from the certificate store
[INFO] Removing certificate domain.com 2019/10/19 17:36:19 下午 from store WebHosting
[INFO] Renewal for domain.com succeeded
[INFO] Next renewal scheduled at 2019/12/14 2:46:50 上午

© 版权声明

☆ END ☆
喜欢就点个赞吧
点赞0 分享
图片正在生成中,请稍后...