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. Linux基础知识与基础命令

    Linux基础知识与基础命令 系统目录 Linux只有一个根目录,没有盘符的概念,文件目录是一个倒立的树形结构. 常用的目录功能 bin 与程序相关的文件 boot 与系统启动相关 cdrom 与Li ...

  2. 转战JS(1) 初探与变量类型、运算符、常用函数与转换

    转战JS(1)初探与变量类型.运算符.常用函数与转换 做为一名.NET后台开发人员,正考滤向Web前端开发转型,之前也写过一代前端代码,可是当再回头看JS,并有转向它的意愿的时候,突然发现:原来JS不 ...

  3. Azure DevKit(AZ3166)源码找不到头文件问题

    Get “Error Presented: #include errors detected” when opening a project The error message is Error Pr ...

  4. dns服务器测试工具

    下载地址:https://www.eatm.app/wp-content/uploads/2018/08/eDnsTest.20180810.zip

  5. IE 8 下sharepoint 2013 难看的字体的解决方案

    将 corev15.css 中的有关"Segoe UI","Segoe",Tahoma,移除即可. 一共二处 C:\Program Files\Common F ...

  6. October 13th 2017 Week 41st Friday

    The shortest distance between two people is a smile. 人与人之间最短的距离是微笑. I find a smiling face can bring ...

  7. SVN 图标不显示的解决办法

    SVN 的图标没办法显示了.经搜索,发现需要修改注册表 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Sh ...

  8. [提权]域内提权神器 MS14-068 完整EXP

     可以让任何域内用户提升为域管理员     c:\python27\python.exe ms14-068.py -u k8test3@k8.local -p k8team!@# -s S-1-5-2 ...

  9. 洛谷P1803

    #include <iostream>#include <algorithm>#include <cstdio>using namespace std; struc ...

  10. JS播放声音

    <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>JS播放声音</tit ...