开发测试时,一般需要使用安全证书。但是,自己签名的证书总是提示不安全,影响实际测试。
这里提供生成CA证书和服务器证书的脚本。通过以下方法生成的证书,在chrome浏览器打开是安全的,不会出现不安全提醒。生成的服务器证书提供通用格式的pkcs12(后缀用.p12)和java的特有格式keystore(后缀用.jks)。这样,不管是用将j2ee开发的服务器还是nodejs等开发的服务器,都能配置证书。
验证服务器证书前,必须将CA证书导入系统信任的根证书列表。这样,全部用该CA签名的证书都是可信任的。注意,服务器证书不用再导入系统。只要CA是信任的,其它子证书都是信任的。
前提:
chrome对于自签名有一定要求。只有按照要求生成,才能被认为是安全的证书。首先,证书需要有CA。也就是说,服务器的证书必须经过CA签名后,才能使用。由于keytool不能创建这种签名的证书,所以需要借助openssl。openssl可以在官网下载对应的系统版本。由于我是在windows下创建,所以下载的是windows版。下载的压缩包里面有share\openssl.cnf文件。这个文件就是配置文件。我们根据自己需要调整里面的内容就可以。如果运行openssl提示无法找到配置文件,那么把配置指向上面的文件就行。
准备:
openssl-0.9.8h-1-bin(官网下载就行,我也会在楼下发一份)
keytool(jdk自带的)
以上程序下载后,记得配置PATH指向他们的bin目录。这样才能直接执行命令。
调整配置:
找到“req_extensions = v3_req”这行。若前面加了“#”注释,记得把注释拿掉。因为签名时,需要启用该配置来添加可选域名信息。
找到“[ v3_req ]”这行。它的后面就是我们上面开启的配置。我们需要增加“subjectAltName=@alt_names”这行。然后在后面补充这个“alt_names”指向的配置。这个配置就是可选域名列表。创建服务器证书时,Common Name必须是一个域名,且属于这个可选域名范围:
[alt_names]
DNS.1=ufo.org
DNS.2=*.ufo.org
上面这个配置就是指定了两个可选域名。只要属于上面范围的域名的服务器证书,都会认为安全的。自己根据实际需要调整上面配置。
我会在楼下发一份配置,大家根据需要下载。
执行脚本:
楼下有创建CA证书和服务器证书的脚本。由于命令比较简单,我就不对过程详细说明。命令里面会使用默认的名称。如果你要调整导出的文件名称,调整脚本参数就行。如果不明白参数作用,运行一下命令的帮助,里面的描述都很清晰。
更多脚本和工具,到我贴吧文章里面查看吧:
https://tieba.baidu.com/p/5912383945
另外,补充一下:
国内的云服务商,像百度云、阿里云、又拍云,都有一定数量的免费证书,所以可以注册后,申请使用。同时,为了普及HTTPS,国外其实有一个知名的证书签发组织,这里签发的都是免费的,推荐去折腾这个比较好
https://letsencrypt.org
又拍云其实就是签发这个的!
来源:CSDN
作者:UFO_SERIESOFSOFT
链接:https://blog.csdn.net/UFO_SERIESOFSOFT/article/details/103650724