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. 使用 Roslyn引擎动态编译代码

    Roslyn引擎自2014年开源至今这么久,一直没怎么了解过,虽然VS2015早就集成了它. 以前老一套的动态编译方法在 .NET Core中似乎不再支持了,很多方法都是未实现的.下面就介绍如何在.N ...

  2. Python Socket 通信

    参考: http://www.cnblogs.com/alex3714/articles/5830365.html Socket A network socket is an endpoint of ...

  3. plupload 大文件分片上传与PHP分片合并探索

    最近老大分给我了做一个电影cms系统,其中涉及到一个功能,使用七牛云的文件上传功能.七牛javascript skd,使用起来很方便,屏蔽了许多的技术细节.如果只满足与调用sdk,那么可能工作中也就没 ...

  4. Hadoop HBase概念学习系列之HBase里的Zookeeper(二十一)

    这个,很简单,但凡是略懂大数据的,就很清楚,不多说,直接上图.

  5. [2018HN省队集训D9T1] circle

    [2018HN省队集训D9T1] circle 题意 给定一个 \(n\) 个点的竞赛图并在其中钦定了 \(k\) 个点, 数据保证删去钦定的 \(k\) 个点后这个图没有环. 问在不删去钦定的这 \ ...

  6. 1.数据结构&算法的引言+时间复杂度

    一.什么是计算机科学? 首先明确的一点就是计算机科学不仅仅是对计算机的研究,虽然计算机在科学发展的过程中发挥了重大的作用,但是它只是一个工具,一个没有灵魂的工具而已.所谓的计算机科学实际上是对问题.解 ...

  7. 使用mpVue开发小程序实战总结

    1.图形验证码接口返回base64格式的数据,使用image标签接收不显示问题. 解决方法: 使用wx.base64ToArrayBuffer和wx.arrayBufferToBase64转化一遍数据 ...

  8. 元素视差方向移动jQuery插件-类似github 404页面效果

    原文地址:http://www.xuanfengge.com/shake.html 前言: 视差滚动,大家也许并不陌生.但是对于视差方向移动,你是否有见过效果呢?看官请进来瞧瞧~ demo : 轩枫阁 ...

  9. python第二十七课——os模块

    演示os模块中常用的属性和函数: 1.os模块: 作用:管理文件和目录 属性: os.name:返回系统类型 常用的windows系统 --> nt os.environ:返回当前系统所有的环境 ...

  10. Redis系列五:redis键管理和redis数据库管理

    一.redis键管理 1 键重命名 rename oldKey newkey //格式rename oldKey newKey //若oldKey之前存在则被覆盖set name james :set ...