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. windows 服务器远程桌面 你的凭据不工作

    一.问题描述   通过windows 远程桌面连接服务器时,输入正确的用户名和密码,点击连接按钮时,提示“你的凭据不工作”,但是其他个别电脑可以通过远程桌面远程到目标服务器.问题描述如下图所示: 二. ...

  2. SQLSERVER中的LOB页面简单研究

    SQLSERVER中的LOB页面简单研究 这篇文章和我另一篇文章是相辅相成的,在看<SQLSERVER2012 列存储索引的简单研究和测试>这篇文章之前希望大家先看一下这篇文章o(∩_∩) ...

  3. SendMessage,BroadcastMessage

    三者比较 用于向某个GameObject发送一条信息,让它完成特定功能.其实本质是调用绑定GameObject里面的Script里面的函数,可以跨语言的,例如Javascript可以调用C#的函数,我 ...

  4. tomcat 闪退处理

    参考文章:https://www.cnblogs.com/lanjianhappy/p/6491436.html 首先确保JDK环境变量已经配置好! 设置jdk环境 变量:https://jingya ...

  5. 【转】HTTP学习---Web 缓存

    [原文]https://www.toutiao.com/i6592743068623962632/ 1. 前端缓存概述 前端缓存主要是分为HTTP缓存和浏览器缓存.其中HTTP缓存是在HTTP请求传输 ...

  6. 【QT5】 第一个hello world 程序

    #include <QApplication> #include <QWidget> #include <QPushButton> int main(int arg ...

  7. MySQL基础之 AUTO_INCREMENT

    AUTO_INCREMENT AUTO_INCREMENT是mysql唯一扩展的完整性约束,当为数据库表中插入新纪录时,字段上的值会自动生成唯一的ID,再具体设置AUTO_INCREMENT约束时,一 ...

  8. ATP学姐的模拟赛

    ATPの水题大赛 声明:不是我觉得这题水,这就是本场模拟赛的名称. T1:求所有的$n$位数中有几个数满足:每一位要么是$A$要么是$B$,并且这个$n$位数的每一位加起来是$A$或$B$的倍数. $ ...

  9. Oracle RMAN 恢复数据库到不同主机(二)

    我们在recover database时报一个错误: RMAN-06054: media recovery requesting unknown archived log for thread 1 w ...

  10. Ant在MyEclipse中的配置总结

    1.在配置Ant之前,先要配置好JDK的JAVA_HOME和path:之后下载解压apache-ant-1.7.1;并配置环境变量ANT_HOME(安装目录,后不可以加分号:)及其path(安装目录/ ...