Windows Ubuntu Bash申请免费通配符证书(Let's Encrypt)并绑定IIS

什么是 Let’s Encrypt?

部署 HTTPS 网站的时候需要证书,证书由 CA 机构签发,大部分传统 CA 机构签发证书是需要收费的,这不利于推动 HTTPS 协议的使用。

Let’s Encrypt 也是一个 CA 机构,但这个 CA 机构是免费的!!!也就是说签发证书不需要任何费用。

什么是通配符证书

在没有出现通配符证书之前,Let’s Encrypt 支持两种证书。

1)单域名证书:证书仅仅包含一个主机。

2)SAN 证书:一张证书可以包括多个主机(Let’s Encrypt 限制是 20)

证书包含的主机可以不是同一个注册域,不要问我注册域是什么?注册域就是向域名注册商购买的域名。

对于个人用户来说,由于主机并不是太多,所以使用 SAN 证书完全没有问题,但是对于大公司来说有一些问题:

  • 子域名非常多,而且过一段时间可能就要使用一个新的主机。
  • 注册域也非常多。

读者可以思考下,对于大企业来说,SAN 证书可能并不能满足需求,类似于 sina 这样的网站,所有的主机全部包含在一张证书中,而使用 Let’s Encrypt 证书是无法满足的。

Let’s Encrypt 通配符证书

通配符证书就是证书中可以包含一个通配符,比如 .example.com、.example.cn,读者很快明白,大型企业也可以使用通配符证书了,一张证书可以防止更多的主机了。

这个功能可以说非常重要,从功能上看 Let’s Encrypt 和传统 CA 机构没有什么区别了,会不会触动传统 CA 机构的利益呢?

如何申请 Let’s Encrypt 通配符证书

为了实现通配符证书,Let’s Encrypt 对 ACME 协议的实现进行了升级,只有 v2 协议才能支持通配符证书。

也就是说任何客户端只要支持 ACME v2 版本,就可以申请通配符证书了,是不是很激动。

官方介绍 Certbot 0.22.0 版本支持新的协议版本

在了解该协议之前有几个注意点:

1)客户在申请 Let’s Encrypt 证书的时候,需要校验域名的所有权,证明操作者有权利为该域名申请证书,目前支持三种验证方式:

  • dns-01:给域名添加一个 DNS TXT 记录。
  • http-01:在域名对应的 Web 服务器下放置一个 HTTP well-known URL 资源文件。
  • tls-sni-01:在域名对应的 Web 服务器下放置一个 HTTPS well-known URL 资源文件。

而申请通配符证书,只能使用 dns-01 的方式

安装Windows Ubuntu Bash

打开控制面板\所有控制面板项\程序和功能,点击左边的“启用/关闭Windows功能”

选择上“适用于Linux的Windows子系统”后点“确定”安装相关功能

然后打开“应用商店”Microsoft Store

搜索“Linux"会出现”在Windows上运行Linux的专题。
列出来的Linux子系统都是Windows10支持的Bash,
本人安装的是Ubuntu

安装后会在菜单里显示Ubuntu的启动项,第一次运行的时候,会要求设置一下管理员的相关密码

按提示设置就可以了

然后从菜单启动,就会看到熟悉的Ubuntu控制台了

我们用sudo lsb_release -a就可以看到当前安装的Ubuntu版本了

[email protected]:~$ sudo lsb_release -a
[sudo] password for Giant:
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.3 LTS
Release:        16.04
Codename:       xenial

接下来我们开始在这个Ubuntu Bash里通过Certbot申请Let‘s Encrypt通配符证书


首先安装Certbot
打开Certbot官网https://certbot.eff.org/
选择我们申请证书的使用方式后,就会出现相关安装命令

由于我们的Ubuntu Bash系统是16.04版本,所以选择此系统
然后就会看到安装命令为

$ sudo apt-get update
$ sudo apt-get install software-properties-common
$ sudo add-apt-repository ppa:certbot/certbot
$ sudo apt-get update
$ sudo apt-get install certbot 

完成这些命令后,我们的申请证书工具certbot已经安装完成。
我们打算给51tcsd.com这个域名申请通配符证书
那么我们就运行此命令

$ sudo certbot certonly  -d *.51tcsd.com --manual --preferred-challenges dns --server https://acme-v02.api.letsencrypt.org/directory

介绍下相关参数:

  • certonly,表示安装模式,Certbot 有安装模式和验证模式两种类型的插件。
  • --manual 表示手动安装插件,Certbot 有很多插件,不同的插件都可以申请证书,用户可以根据需要自行选择
  • -d 为那些主机申请证书,如果是通配符,输入 *.newyingyong.cn(可以替换为你自己的域名)
  • --preferred-challenges dns,使用 DNS 方式校验域名所有权
  • --server,Let‘s Encrypt ACME v2 版本使用的服务器不同于 v1 版本,需要显示指定。

接下去就是命令行的输出:

上述有两个交互式的提示:

  • 是否同意 Let‘s Encrypt 协议要求
  • 询问是否对域名和机器(IP)进行绑定

确认同意才能继续。

继续查看命令行的输出,非常关键:

要求配置 DNS TXT 记录,从而校验域名所有权,也就是判断证书申请者是否有域名的所有权。

上面输出要求给 _acme-challenge.51tcsd.com 配置一条 TXT 记录,在没有确认 TXT 记录生效之前不要回车执行。

我使用的是阿里云的域名服务器,登录控制台操作如下图:

然后打开另一个终端输入以下命令确认配置是否生效

dig -t txt _acme-challenge.51tcsd.com @8.8.8.8

输出如下表示成功配置好DNS记录了

然后在申请证书的终端里按下回车执行,输出如下

关键信息如下

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/51tcsd.com-0001/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/51tcsd.com-0001/privkey.pem
   Your cert will expire on 2018-08-23. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot
   again. To non-interactively renew *all* of your certificates, run
   "certbot renew"

表示把相关证书保存在了/etc/letsencrypt/live/51tcsd.com-0001/这个目录
我们进去看一下此目录文件生成了如下文件
cert.pem  chain.pem  fullchain.pem  privkey.pem  README
在Bash下,如果没有用超级用户可能进不到live/51tcsd.com-0001/,显示没有权限
我们用超级用户进入,命令如果下

$ sudo su

输出结果如下

到此为此,申请证书相关的工作就完成了

接下来。怎么把申请到的证书导入到IIS中

由于我们申请的证书为pem格式,而IIS只支持pfx格式证书
所以我们要把输的人pem文件合并为pfx证书
这样我们就要用到openssl命令了

openssl pkcs12 -export -out 51tcsd.pfx -inkey privkey.pem -in fullchain.pem -certfile cert.pem

我们用此命令把pem文件合并为51tcsd.pfx文件,提示中要输入证书的密码,按提示输入即可
显示输出如下

我们可以看到,当前目录下成功生成了51tcsd.pfx文件
接下来我们就要把51tcsd.pfx文件导入到Windows系统
我们知道Ubuntu对于Windows来说只是一个应用,
所以Ubuntu里所有的文件,我们都可以通过Windows资源管理里看到,
我发现我的Ubuntu目录挂载在我的Windows目录的此位置
C:\Users\Administrator\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs

我们进到C:\Users\Administrator\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\etc\letsencrypt\live\51tcsd.com-0001
就可以看到我们的pfx文件了

接下来。我们右键证书点安装pfx

输入刚刚openssl合并的时候输入的密码

点完成后。就会显示导入成功了
接下来。我们打开IIS管理器。看到服务器证书里面,就能发现我们申请的通配符证书了

接下来,我们给一个站点绑定随便一个二级域名,比如:a.51tcsd.com
首先把hosts文件把a.51tcsd.com解析到我本机127.0.0.1

然后在IIS里选择站点”Default Web Site"选择右边的“绑定”

输入相关信息,并选择证书

然后我们在浏览器里访问https://a.51tcsd.com/
是不是看到惊喜了

Windows Ubuntu Bash申请免费通配符证书(Let's Encrypt)并绑定IIS

原文地址:https://www.cnblogs.com/liuju150/p/Let_Encrypt_Windows_IIS.html

时间: 2024-10-18 14:03:28

Windows Ubuntu Bash申请免费通配符证书(Let's Encrypt)并绑定IIS的相关文章

阿里云怎么申请免费的证书

过程: 1. https://common-buy.aliyun.com/?commodityCode=cas#/buy # 转到 云盾证书服务的购物车 2. 默认当前购物车仅显示"专业版OV SSL"和"通配符DV SSL",请点击"选择品牌"中的"Symantec" :点击"保护类型"中的"1个域名" 3. 之后,就可以选中"证书类型"中的"免费型DV

windows server 服务器添加免费域名证书的方法(Let's Encrypt)

在 windows server 服务器上可以通过 win-acme工具添加ssl 1.首先下载工具 https://github.com/PKISharp/win-acme/releases 最新版本即可 百度网盘 https://pan.baidu.com/s/12IfBIA6wh9jVH5pKKQ9Yww 2.进入服务器,下载解压,直接运行letsencrypt.exe 有可能会提示需要下载一个包,直接安装即可 3.按照提示一步一步操作即可 4.这个免费证书每6个月需要续期一次,也提供续期

免费SSL证书Let's Encrypt(certbot)安装使用教程

免费SSL证书Let's Encrypt(certbot)安装使用教程 原文地址:https://www.cnblogs.com/ZHONGZHENHUA/p/9003960.html

[从零开始搭网站六]为域名申请免费SSL证书(https),并为Tomcat配置https域名所用的多SSL证书

点击下面连接查看从零开始搭网站全系列 从零开始搭网站 由于国内的网络环境比较恶劣,运营商流量劫持的情况比较严重,一般表现为别人打开你的网站的时候会弹一些莫名其妙的广告...更过分的会跳转至别的网站. 那么为了解决这种情况,那么我们就要申请SSL证书,并且配置服务器. 并且,我准备再学习并写一个微信小程序,而微信小程序所有接口都需要走https,那么全线https就势在必行. 目前免费https其实有很多家,我之前出过一个教程是 用Let's Encrypt实现Https(Windows环境+To

申请免费ssl证书 StartSSL

最近公司需要绑定ssl证书,来做app的应用连接,所有就查了下资料发现有startssl这个东西可以申请免费的认证证书.https://www.startssl.com/ 发现startssl在使用ie和谷果浏览器,都不会提示非法证书.确实不错,重点是免费.不过它免费的注册,但是如果你私钥忘记了,丢了就是要25美刀了... 一.注册startssl帐号 start官网的登录界面使用的证书验证,注册帐号才能获取证书. 注册帐号很简单,就是地址要填写详细. 过程中会使用邮箱验证,等你激活完成.页面有

在阿里云里申请免费Https证书SSL

在阿里云控制台:安全(云盾)->证书服务->购买证书里(地址:https://common-buy.aliyun.com/?spm=5176.2020520163.cas.1.zTLyhO&commodityCode=cas#/buy)  选择免费的证书类型完成购买 免费购买完成后,在订单里不去信息,输入需要使用Https服务的详细子域名,填写个人信息 完成信息后,接下来就是等待审批结果了,审批通过后,下载, 根据自己服务器的实际情况 ,选择相应类型,完成安装,我的是windows s

腾讯云服务器申请免费SSL证书,实现Https。

1.首先在腾讯云的SSL证书管理中申请免费的SSL.审核速度还是挺快的... 2.按照步骤申请后,就可以下载主流web服务器的证书了.如图: 3.这里我使用的web服务器是nginx,把nginx下的文件上传到linux服务器中. 4.配置nginx.conf内容 server { listen 443; server_name _; charset utf-8; ssl on; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIG

阿里云免费申请免费SSL证书

随着互联网的不断进步与发展,对于网站与数据的安全性要求也越来越高,原本的HTTP明文传输已经不被信任,https逐渐被关注,从谷歌.火狐浏览器将对HTTP明文页面标记"不安全",到强制要求iOS App使用HTTPS加密连接(苹果要求所有应用到2016年底必须使用HTTPS),再到新一代HTTP/2协议只支持HTTPS加密连,这都预示着互联网即将改变HTTP传输的规则. 目前,国内最大的云计算平台阿里云为满足用户对SSL证书的需求,已经在云平台上推出了4大证书品牌,下面就以Symant

阿里云虚拟主机申请免费SSL证书并成功开通Https访问

参考文档网址  https://baijiahao.baidu.com/s?id=1628343140232374972&wfr=spider&for=pc 原文地址:https://www.cnblogs.com/qinlongqiang/p/11982091.html