上一篇日志中介绍了tomcat+openssl实现双向认证,但第6步需要用户手工将个人证书及根证书手工导入到IE中去。
这里介绍一种自动导入根证书到IE中去的方法。
- 只自动导入根证书,在原有那篇文章的基础上不需要做什么改动,直接读出根证书内容即可实现。
- 即自动导入根证书,又要自动导入个人证书,这种情况下,创建证书请求的工作要交给IE控件完成。
微软的ICEnroll接口中提供了createPKCS10,acceptPKCS7方法来创建证书,安装证书功能。
在ICEnroll3接口中提供了InstallPKCS7,可以使用它来安装根证书。
只自动导入根证书。
StringTokenizer st = null;
String line = null;
// ————————————————————- 返回CA证书内容 >>>
String server_cert = "开始用openssl生成的根证书内容";
if (StringUtils.isBlank(server_cert)) {
throw new BusinessException("读取CA证书失败");
}
// 这里的这些操作,是为了生成vbscript中证书内容的变量定义
String pkcs7ca = "sPKCS7ca=\"\" & vbcrlf\r\n";
st = new StringTokenizer(server_cert, "\r\n");
while (st.hasMoreTokens()) {
line = st.nextToken();
if (line.equals("\r\n"))
continue;
pkcs7ca += "sPKCS7ca=sPKCS7ca & \"" + line + "\" & vbcrlf\r\n";
}
%>
<OBJECT id=XEnroll classid=clsid:127698e4-e730-4e5c-a2b1-21490a70c8a1 codebase="xenroll.dll"></OBJECT>
<script type="text/vbscript">
ON ERROR resume next
<%=pkcs7ca%>
XEnroll.InstallPKCS7 sPKCS7ca
If err.number = 438 then
msgbox err.description & err.number
Elseif err.number <> 0 then
msgbox err.description & err.number
Else
msgbox "根证书安装成功"
End If
</script>
好东西啊!