使用OpenSSL生成IIS可用的SHA-256自签名证书

使用OpenSSL生成IIS可用的SHA-256自签名证书

好吧,2017年iOS就开始强制开启ATS了,那么所有的网站、API、网页、资源路径等都需要使用TLS1.2以上的标准了!
自签名证书已经不能满足需求了!所以在正式环境上申请购买了OA证书。那么总不至于花钱在测试环境上也买一个证书吧,所以在测试环境上还是可以部署自签名证书的!
本文操作主要分为以下几点:

1、开启TLS1.2
2、生成通配域名(*.abc.com)的自签名证书
3、将自签名证书添加到windows客户端(测试)的信任证书
4、将自签名证书添加到iPhone客户端(测试)的信任证书
5、自签名证书添加到Android,Android很随意,不用赘述

环境为:

1、Windows Server 2008
2、IIS7.5

声明:以下都是配置测试服务器的案例,正式服务器请购买通用认证证书,还有开启TLS1.2的时候需要谨慎重启服务器,做好注册表的备份

1、开启TLS1.2

TLS1.2应用于IIS,需要使用windows server 2008及IIS7.5以上的环境;在2008中,默认开启的是SSL3.0,
SSL3.0相对于TLS1.0,而目前已经明确SSL3.0的加密是不安全的!
本来吧开启TLS1.2是很麻烦的,需要修改注册表等,大家可以看一下:
https://www.derekseaman.com/2010/06/enable-tls-12-aes-256-and-sha-256-in.html
但是为大家找到了一个更简便的方法,下载下面的软件,修改后,重启服务器即可;修改如下图:
这里写图片描述
https://www.nartac.com/Products/IISCrypto/
具体开启方法,文章里面写的有。如果需要校验,是否开启,配置好自签名证书后,使用FireFox打开,查看证书详情即可;也可以下载TestSSLServer2.exe来测试。
如下图:
这里写图片描述

2、使用OpenSSL生成自签名证书

TLS1.2要求使用SHA-256算法来加密,而密钥的长度需要至少1024位。OpenSSL默认使用SHA-1来加密,所以在生成的时候需要注意参数的选择。
首先下载OpenSSL:
https://www.openssl.org/blog/blog/2016/10/12/f2f-rt-github/
解压后放在服务器下的任一目录下,比如D盘。
右键–使用管理员–打开openssl.exe
详细命令可参考:https://impl.gfipm.net/wiki/Generating_Certificates_with_OpenSSL

2.1 生成key和crt:
$ openssl> req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -keyout self.key -out self.crt -subj /CN=*.abc.com
如果出现Unable to load config info from /usr/local/ssl/openssl.cnf错误;
在命令后面加上 -config openssl.cnf,openssl.cnf需要在openssl.exe同目录下,如果没有网上找。
参数解释:
-sha256 :使用sha256算法
rsa:2048 :2048位密钥
-days 365:证书有效期365天
-subj /CN=*.abc.com :使用abc.com域名的通配方式作为使用者,这个功能我也是摸索了好久才实现的。一般域证书都只绑定一个域名(二级域名也算独立的一个),使用通配方式,此证书可以加密a.abc.com,b.abc.com等多个子域名
self.key:密钥文件,自己命名
self.crt:iphone、mac等使用的证书文件

生成的文件在openssl.exe同目录。

2.2 生成windows使用的证书文件pfx
$openssl>pkcs12 -export -out self.pfx -inkey self.key -in self.crt
执行后,会提示输入证书密码,自己测试用的,输入简单点就行。

2.3 部署IIS
找到IIS的“服务器证书”,点击进入,并在右侧选择“导入”
这里写图片描述

密码输入上一步中自己定义的密码,确定导入成功后,就可以配置https的安全网站了
这里写图片描述

好了试试在客户端用浏览器访问
这里写图片描述
火狐浏览器使用的自己的证书,所以不能添加信任。
IE和Chrome是共用系统的证书,可以根据下面的方法进行添加认证。

3、将自签名证书添加到windows客户端(测试)的信任证书

将pfx证书,发送给需要测试的客户端电脑。在客户端电脑选择打开证书,选择“本地计算机”,下一步,输入自己设定的密码,下一步,自己选择路径,不要默认,选择“受信任的根证书”,确定,导入完成。
这里写图片描述
这里写图片描述
这里写图片描述
使用IE和Chrome浏览器打开网址就可以看到绿色的小锁了。使用火狐,然后添加例外,查看证书信息可以看到加密信息了,是TLS1.2就对了。
这里写图片描述
这里写图片描述
这里写图片描述

4、将自签名证书添加到iPhone客户端(测试)的信任证书

使用safari访问自签名证书绑定的域名,会出现是否继续的提示,不要点,我这没试过,据说点完后就再也加入不到信任证书中了。
使用邮件将crt证书作为附件发送到iphone邮件中,使用iphone邮件打开crt,提示”是否加入到可信任证书“中,当然加入了。然后使用safari打开,直接就是加密网站了!
将app中的ATS启用,调试api网址,修改AFNetworking为https访问模式,可以正常访问了。没有修改app的任何代码。不推荐那种在app中加入证书的方式,如果使用那种方式,更换证书什么的太麻烦了,还得重新编译App。

5、自签名证书添加到Android,Android很随意,不用赘述

Android目前还没限制,好像http和https在应用中是通用的,只需要修改访问方式即可。如果要将自签名证书加为信任,在设置里面,关于手机,证书管理中添加,不同机型步骤不同,可自己摸索。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值