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使用教程
SAP S/4HANA MM模块培训 18 - 优化采购:采购申请供应源分配与转单入口
SAP S/4HANA MM模块培训 07 - 消耗性物料、科目分配与采购申请
windows下openssl安装,证书生成,nginx配置https以及http重定向https
nginx内外网分流+https证书同步
javascript中let和var的区别
SAP_GUI_for_Windows_8.00_Comp 客户端安装
window server部署open VPN
微信支付:API商户证书序列号serialNo获取
微信支付:API商户证书序列号serialNo获取
免费在线PS网站(良心推荐,真正免费
SAP S/4HANA MM模块培训 12 - 配额安排、供应源分配与配额评分
免费可商用的字体有哪些?
Python Windows服务
FTP客户端工具 WinSCP ( 推荐,免费 )

热门标签
.NET Core .NET Reactor ag-grid AI发布 api安全 ASP.NET Core C#DLL加密 C#播放声音 C#代码混淆 C#代码加密 ChromeDriver Codex DateTime DBeaver devexpress devTool DLL混淆 edge.js EF EFCore Electron element-ui el-form el-table excel FastReport FileStream FolderBrowerDialog FolderSelectDialog form提交 git gridcontrol gridview input javascript json字符串 JS转换对象JSON jwt JWT授权 linq log Math MCP mitmproxy MVC MySQL Navicat netstat nginx node_modules NSwag Nuget Nuget镜像 number PowerShell pyinstaller python pythoncom python爬虫 python抓包 pywin32 redis Requests-html RestSharp Selenium sql SQL Server Swagger to-cms Visual Studio VSCode vue VueRouter vue路由 VUE页面通讯 Webpack Windows Windows服务 winform wmi xlrd yaml YESCMS YESWEB开发框架 白象 表单提交 播放声音 打开URL 代码混淆 弹窗提醒 端口占用 对象转换 分布式 公共字典 机器码 进程排查 静态资源 开发指南 路由参数 密钥 配置教程 配置文件 权限 人工智能 任务 任务调度 日期间隔 日志 日志记录 省市区 授权验证 数据库 四舍五入 文案 文件读取 文件夹选择 文件目录选择 问题排查 行政区域数据 页面通讯 中间件 CSharp 事务锁 工单系统 并发控制 重复提交 CMS Markdig Markdown markdown-it marked 技术选型 VS Code 开发工具 源代码管理 版本控制 Docker PostgreSQL 时区 部署排查 CMS架构 EF Core 主题系统 二次开发 插件系统 容器 运维命令 镜像清理 Linux NAS 远程挂载 飞牛 fnOS S/4HANA SAP GUI SAP HANA SAP R/3 SAP入门 SAP版本 ERP SAP SAP MM 库存管理 物料管理 采购管理 入门教程 SAP S/4HANA SPRO 企业结构 采购组织 MM01 物料主数据 物料类型 BP分组 业务伙伴 供应商主数据 ME41 RFQ 库存物料 采购流程 ME51 消耗性物料 科目分配 采购申请 AC03 ML81N 外部服务 服务主数据 Business Partner SAP培训 ME51N MM模块 Lean Services MM-SRV 外部服务采购 PIR 供应来源 采购主数据 采购信息记录 ME31K 框架协议 计划协议 采购合同 ME01 供应来源确定 货源清单 MEQ1 供应源确定 配额安排 配额评分 MD04 MD21 MRP 计划文件 需求计划 批量程序 MD01N MD02 MRP Live MD05 MM 物料计划 优化采购 供应源 采购订单
联系我们
联系电话:15090125178(微信同号)
电子邮箱:garson_zhang@163.com
站长微信二维码
微信二维码