18-01-26在v2ex上看到一妹纸发的《身为一个 21 岁的年轻程序员,我已经腰突了(躺》,哈哈,感同身受,想到这几天我左腿麻木持续了好几天,前几天屁股疼的只要坐下就站不起来,不过站着却一点事没有,然后坚持站了好几天,目前屁股不疼,腿麻的毛病还没有恢复。。。[后续]

接触到的https

https站点生产环境和本地测试环境搭建以前也有点接触(Windows Server2008 2012、Win7+IIS、还没有接触过其他系统Mac OS算半个),比如生产环境的:从免费的AlphaSSL通配符证书申请(好像已经关掉了),到坐等2月27号Let’s Encrypt正式开通通配符证书接口。

为什么执意要通配符证书,其实不用也可以,不过要看服务器脸色,Windows Server2008不支持SNI哦,如果是腾讯云或者别的地方免费申请的单域名证书就有点惨了,目前了解到的针对这种单域名的只有加上端口才能多个域名同时使用。免费的Let’s Encrypt签的多域名证书3月要维护一次,感觉好累啊~

本地测试环境相对就简单多了,自己想怎么搞就怎么搞,证书想怎么签就就怎么签,谁要测试就在电脑上把根证书一装,妥妥的。

以前生成证书比较简单,直接用Windows Server系统自带功能证书颁发机构就可以完成证书的签发,也一直是这么干的,给我台式电脑ip签了一个证书,需要的功能开发基本上都满足了,要求其实并没有那么高@.@

好了,为什么又扯出OpenSSL了呢,如果没有Windows Server,Win7是没有证书颁发机构这个玩意的,额外再装一个虚拟机吗?不方便,并且对证书颁发机构不够熟,高级点的证书还要好好研究。需要寻找别的方法了,首选就是OpenSSL了。

准备工作

因为用的是Win7系统,下载了Win32OpenSSL。以前没有怎么用过OpenSSL,用的最多也就是生成个把子RSA秘钥,对于签名和证书是从来没有接触过的,而外花了半天时间搜索学习生成ssl通配符和多域名证书的方法。

IIS全站https计划

准备这样对二级域名进行细分,举个栗子aa.com:

  1. www .aa .com、aa .com:网页和接口
  2. static .aa .com:静态资源,图片、js等
  3. *.aa .com:其他功能站点子域名,广告、单独功能站点
  4. bb .com、cc .com:其他域名,备用

1、3、4是全部要上https的,2这个分http和https,js必须要https,图片之类的没有强制要求,默认全部是https的,让浏览器有把小绿锁。

根据这些域名,本地测试生成证书就有方向了,最好是一个证书解决,不然IIS配置麻烦的要死。用通配符和多域名解决。

生成本地测试证书

根据网上找到的资料,正常生成了证书。先生成根证书,然后生成域名证书,最后用根证书对域名证书签名。把根证书导入目标电脑上就能正常访问所有对应的域名了。

1. 创建根证书

@echo off
set OPENSSL_CONF=openssl.ini echo 创建秘钥
pause
openssl genrsa -out LocalRootCA.key 2048 echo 生成证书并自签名
pause
openssl req -sha256 -new -x509 -days 3650 -key LocalRootCA.key -out LocalRootCA.crt -subj "/CN=LocalRootCA" echo 完成
pause

2. 创建域名证书

@echo off
set OPENSSL_CONF=openssl.ini echo 创建秘钥
pause
openssl genrsa -out aa.com.key 2048 echo 创建请求文件
pause
openssl req -new -sha256 -key aa.com.key -out aa.com.csr -subj "/CN=*.aa.com" echo 生成证书并用根证书签名
pause
openssl x509 -req -in aa.com.csr -CA LocalRootCA.crt -CAkey LocalRootCA.key -CAcreateserial -days 3560 -out aa.com.crt -extfile aa.com.ini -extensions ext echo 导出pfx,请输入密码
pause
openssl pkcs12 -export -out aa.com.pfx -inkey aa.com.key -in aa.com.crt echo 完成
pause

3. 以上代码涉及到两个配置文件:

(1) openssl.ini就是OpenSSL安装目录中的配置文件,原封不动的(除了文件名)

(2) aa.com.ini是多域名配置列表,文件内容:

[ ext ]
subjectAltName = @dns [ dns ]
DNS.1 = aa.com
DNS.2 = *.aa.com
DNS.3 = bb.com
DNS.4 = cc.com
DNS.5 = localhost
DNS.6 = 127.0.0.1

4. 测试

将根证书导入到系统受信任的根证书颁发机构里面,将生成的pfx文件导入到iis里面,站点绑定https,这时我电脑上弹出丢失证书链的提示,不过好像并没有什么影响。浏览器访问正常的很:

收尾

可以看到,通过OpenSSL本地已生成了支持通配符和多域名的证书,本地https全站化测试环境搭建的证书资源算是妥了,想要什么样的就立马生成什么样的,可以看到除了域名,IP也是可以支持进去的。

如果要切换到线上,要简单省钱,等到2月Let’s Encrypt就能提供完美的解决方案了,说到底还是买不起证书,我用免费的。

预告:证书搞完后,下一件已完成的事是把统计局的2017年5月发布的新的行政区划数据重新采集了一遍(省市区镇数据),含数据格式化和拼音标注,整个过程用纯js处理的,这个方法比较拿手,过段时间针对这个功能会单独发一篇文章。

[接续] 可能是躺久了或者是持续坐久了的的原因吧,来三亚将近20天一直猫在一间5平米不到的小屋里面,行李箱当桌子、床当凳子,矮了点。不过后面几天站着还好,至少没有屁股和腰疼的毛病,前段时间上班经历了第一次腰疼,疼了半个月,不过自己恢复了。少坐多站,坐也要坐好,躺也要躺好。

生成本地测试用https证书,支持通配符和多域名,初学OpenSSL的更多相关文章

  1. 生成线上用https证书,支持通配符和多域名,初学Let’s Encrypt用于IIS,纯本地手动

    自简书发布的上篇<生成本地测试用https证书,支持通配符和多域名,初学OpenSSL>以来,本地测试用https用的妥妥的. 线上一直用的腾讯云的免费证书(每个域名都要一个证书(滑稽), ...

  2. HTTPS证书申请相关笔记

    申请免费的HTTPS证书相关资料 参考资料: HTTPS 检测 苹果ATS检测 什么是ECC证书? 渠道2: Let's Encrypt 优点 缺点 Let's Encrypt 的是否支持非80,44 ...

  3. 在Windows Server 2008上部署免费的https证书

    背景 后web时代,https加密的重要性不言而喻.主流浏览器均对http站点标记不安全,敦促web服务提供商尽快升级至https. 原先的https证书多由各大域名服务商提供,动辄成千上万的部署证书 ...

  4. https证书申请流程和简介

    HTTPS证书是什么 HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安 ...

  5. linux自建https证书

    一.生成单向认证的https证书 建立服务器私钥,生成RSA秘钥. 会有两次要求输入密码, 然后获得了一个server.key文件. 以后使用此文件(通过openssl提供的命令或API)可能经常回要 ...

  6. https学习笔记三----OpenSSL生成root CA及签发证书

    在https学习笔记二,已经弄清了数字证书的概念,组成和在https连接过程中,客户端是如何验证服务器端的证书的.这一章,主要介绍下如何使用openssl库来创建key file,以及生成root C ...

  7. 生成和配置https证书

    最近在做小程序,调用后台接口需要https协议请求,小程序之所以这么要求,也是因为http协议是明文传播文件数据的,出于数据安全考虑,必须使用https协议. http想实现为https 就需要为配置 ...

  8. Centos7 通配符HTTPS证书申请 实测 笔记

    环境: 免费通配符HTTPS证书网址: https://letsencrypt.org/ 1.下载证书申请工具 [root@centos ~]# mkdir /opt/letsencrypt -p [ ...

  9. Nginx 学习笔记(九)申请Let's Encrypt通配符HTTPS证书

    Let's Encrypt 宣布 ACME v2 正式支持通配符证书,并将继续清除 Web 上采用 HTTPS 的障碍,让每个网站轻松获取管理证书.消息一出,马上就有热心用户分享出了 Let's En ...

随机推荐

  1. ulimit linux文件配置

    文件描述符在形式上是一个非负整数.实际上,它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表.当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符.在程序设计中,一 ...

  2. firefox(火狐)和Chrome(google)浏览器清空缓存操作的方法指引

    摘要说明: 1.系统做升级更新,更新了css和js 2.系统更新有,因为缓存问题,有客户反馈新增功能不能使用 3.所以要清空缓存,提供火狐和谷歌浏览器清空缓存的操作指引 4.附:代码层面的清空缓存方案 ...

  3. js fetch处理异步请求

    以往一直认为异步请求只能使用原生js的XMLHttpRequest或jQuery的$.ajax().$.post()等框架封装的异步请求方法 原来js还提供fetch来替代XMLHttpRequest ...

  4. MySQL基础之 日期时间函数

    基础日期函数和时间函数 1.CURDATE()函数:返回当前只带有年月日格式的日期 2.CURTIME()函数:返回当前只带有时分秒格式的时间 3.NOW()函数:返回当前日期和时间 4.UNIX_T ...

  5. October 16th 2017 Week 42nd Monday

    The more decisions that you are forced to make alone, the more you are aware of your freedom to choo ...

  6. Beyond Compare使用

    1.通过过滤功能设置要比较的文件: 2.all,diff功能适用于文件本身的差异以及目录的差异 其它问题: 1.Beyond Compare比较文件时,相同的文件也显示为红色(有差异) http:// ...

  7. js面对对象编程(二):属性和闭包

    上篇博客中解说了一些js对象的基本概念和使用方法.这篇博客解说一下js属性方面的:公有属性.私有属性,特权方法. 假设学过java.公有属性.私有属性,特权方法(即能够訪问和设置私有属性的方法)一定非 ...

  8. 【转】Android 获取本机号码(收集)

    SIM卡存储的数据可分为四类: 第一类是固定存放的数据.这类数据在移动电话机被出售之前由SIM卡中心写入,包括国际移动用户识别号(IMSI).鉴权密钥(KI).鉴权和加密算法等等. 第二类是暂时存放的 ...

  9. Net dll组件版本兼容问题

    dll组件版本兼容问题,是生产开发中经常遇到的问题,常见组件兼容问题如:Newtonsoft.Json,log4net等 为了节约大家时间,想直接看解决方法的,可直接点击目录3.4 目录 1.版本兼容 ...

  10. OpenCV——Brisk特征检测、匹配与对象查找

    检测并绘制特征点: #include <opencv2/opencv.hpp> #include <opencv2/xfeatures2d.hpp> #include < ...