先上效果图:
添加证书后,https访问未出现红色的不安全字样
10版本在生成keystore文件的方式,变换还是挺大的,记得4-8版本(9版本没搞过),keystore的文件生成方式都是采用keytool的方式进行生成,那时候添加扩展直接在命令行后面添加添加 -ext san=IP:127.0.0.1,DNS:localshot即可,今天第一次看到JcaX509v3CertificateBuilder还是很懵逼的,不过有度娘的帮助,还是根据对应的API文档找到了对应的解决方案,解决方案见下图
添加红框的代码,重新生成keystor文件
InetAddress addr = InetAddress.getLocalHost();
DERSequence subjectAlternativeNames = new DERSequence(new ASN1Encodable[] {
new GeneralName(GeneralName.dNSName, "localhost"),
new GeneralName(GeneralName.iPAddress, "127.0.0.1"),
new GeneralName(GeneralName.iPAddress, addr.getHostAddress()),
new GeneralName(GeneralName.dNSName, addr.getHostName()),
});
builder.addExtension(Extension.subjectAlternativeName, false, subjectAlternativeNames);
使用KeyStore Explorer工具打开生成的keystore文件(默认密码myPassword)
点击Export
导出的证书路径,可以自己指定
将导出的证书安装到受信任的根目录下即可。
注:如果对API有不了解的地方,可以去JDK去查看对应API解释,此文只记录问题的处理方式。