windows下 申请免费ssl证书的方法 (letsencrypt)

2019年11月16日 阅读数:23
这篇文章主要向大家介绍windows下 申请免费ssl证书的方法 (letsencrypt),主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

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

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

 

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

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

 

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

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

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

   2.3 若是是5.0及以上的 执行命令:Install-Module -Name ACMESharpapi

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

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

          在执行: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 http-01

   2.10  提交以后咱们接下来就须要等待LE服务器来验证了,咱们能够经过命令查看状态:

           执行:Update-ACMEIdentifier dns1

   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 再次开始

 

   2.11 若是返回valid表示验证成功后咱们继续下一步 建立证书申请

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

          执行:Submit-ACMECertificate cert1

          cert1 是你本身定义的证书名称

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

          执行:Update-ACMECertificate cert1

          

           能够看到证书的签名算法是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回车,邮箱注册完以后,程序会自动获取当前服务器部署的全部网站,以下:

            

 

      按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,输入相应的系统登陆用户名和密码便可。