以下是自动安装数字证书,其中var cer=“........”里边是是数字证书的内容。那么这个内容是如何得到的呢通过以下方法
try {
String realPath = this.getClass().getClassLoader().getResource("RootAgency.cer").getPath();
System.out.println();
File file = new File(realPath);
if (!file.exists()) {
out.println("<HTML><BODY><P>");
out.println("<h2>根证书文件不存在</h2> <br/>");
System.out.println(realPath);
out.println("</P></BODY></HTML>");
out.flush();
out.close();
}else{
FileInputStream fis = null;
try {
fis = new FileInputStream("D:/RootAgency.cer");
int len = fis.available();
byte[] usercert = new byte[len];
fis.read(usercert);
fis.close();
BASE64Encoder encl = new BASE64Encoder();
strCert = encl.encode(usercert);
strCert = "-----BEGIN CERTIFICATE-----" + strCert;
strCert += "-----END CERTIFICATE-----";
System.out.println(strCert);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
out.print("<textarea rows=\"\" cols=\"\" id = \"mycert\">" + strCert + "</textarea>");
}
}catch(Exception e){
out.println("<HTML><BODY><P>");
out.println("<h2>读取证书文件出错</h2> <br/>");
out.println(e.toString());
out.println("</P></BODY></HTML>");
out.flush();
out.close();
}
然后通过 var cer = document.getElementById("mycert").innerText;
注明:|| userOS.equals("Windows NT 5.2")网上资料 是在win7系统或者vista系统的。但是本人试验windows2003 是userOS.equals("Windows NT 5.2")
注明:如果放在liferay的jsp 中,会报错,原因是 Agent = request.getHeader("User-Agent"); 没有值,那么怎么得到呢 ?通过以下方法:
写在java文件中 然后把 userOS作为参数转递到jsp中就不会出错误了
public class XXXXXXAction extends PortletAction {
public ActionForward render(ActionMapping mapping, ActionForm form, PortletConfig config,
RenderRequest request, RenderResponse response)
throws Exception{
String Agent = ((com.liferay.portlet.PortletRequestImpl)request).getHttpServletRequest().getHeader("user-agent");
StringTokenizer st = new StringTokenizer(Agent,";");
st.nextToken();
String userBrowser = st.nextToken();//浏览器
String userOS = st.nextToken();//操作系统
}
}
<%@ page import="java.lang.*,java.io.*,sun.misc.BASE64Encoder" %>
<html>
<head>
<title>IE中自动安装根证书</title>
</head>
<object id="objCertEnrollClassFactory" classid="clsid:884e2049-217d-11da-b2a4-000e7bbb2b09"></object>
<script type="text/javascript">
function InstallCertwin7()
{
try {
var certEnroll = document.getElementById("objCertEnrollClassFactory");
// alert(certEnroll);
var objEnroll = certEnroll.CreateObject("X509Enrollment.CX509Enrollment")
var cer = "-----BEGIN CERTIFICATE-----MIIByjCCAXSgAwIBAgIQBjdsAKoAZIoRz7jUqlw19DANBgkqhkiG9w0BAQQFADAWMRQwEgYDVQQD EwtSb290IEFnZW5jeTAeFw05NjA1MjgyMjAyNTlaFw0zOTEyMzEyMzU5NTlaMBYxFDASBgNVBAMT C1Jvb3QgQWdlbmN5MFswDQYJKoZIhvcNAQEBBQADSgAwRwJAgVUiuYqkb+3W59lmD1W8183VvE5A AiGisfeHMIVe0vJEudybdbb7Rl9Ctp0jNgveVA/NvR+ZKhBYEctAy7WnQQIDAQABo4GeMIGbMFAG A1UEAwRJE0dGb3IgVGVzdGluZyBQdXJwb3NlcyBPbmx5IFNhbXBsZSBTb2Z0d2FyZSBQdWJsaXNo aW5nIENyZWRlbnRpYWxzIEFnZW5jeTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEU MBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwDQYJKoZIhvcNAQEEBQADQQAt Lj57iUKJP6ghF/rw9cOV22JpW8ncwbP68MRvb2SavecbJWhyg2e9VrCNAb0q98xLvYeluocgTEIR Qa0QFzuM-----END CERTIFICATE-----";
objEnroll.Initialize(1); // ContextUser
// objEnroll.InstallResponse(4, sPKCS7, 6, ""); // AllowNone = 0, XCN_CRYPT_STRING_BASE64_ANY = 6
objEnroll.InstallResponse(4, cer, 6, "");
document.write("<br>证书安装成功");
}
catch (ex) {
document.write("<br>" + ex.description);
return false;
}
return true;
}
</script>
<script>
function InstallCertwindows()
{
// document.write("正在安装证书xp");
try
{
var enroll = document.getElementById("XEnroll");
alert(enroll);
var cer = "-----BEGIN CERTIFICATE-----MIIByjCCAXSgAwIBAgIQBjdsAKoAZIoRz7jUqlw19DANBgkqhkiG9w0BAQQFADAWMRQwEgYDVQQD EwtSb290IEFnZW5jeTAeFw05NjA1MjgyMjAyNTlaFw0zOTEyMzEyMzU5NTlaMBYxFDASBgNVBAMT C1Jvb3QgQWdlbmN5MFswDQYJKoZIhvcNAQEBBQADSgAwRwJAgVUiuYqkb+3W59lmD1W8183VvE5A AiGisfeHMIVe0vJEudybdbb7Rl9Ctp0jNgveVA/NvR+ZKhBYEctAy7WnQQIDAQABo4GeMIGbMFAG A1UEAwRJE0dGb3IgVGVzdGluZyBQdXJwb3NlcyBPbmx5IFNhbXBsZSBTb2Z0d2FyZSBQdWJsaXNo aW5nIENyZWRlbnRpYWxzIEFnZW5jeTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEU MBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwDQYJKoZIhvcNAQEEBQADQQAt Lj57iUKJP6ghF/rw9cOV22JpW8ncwbP68MRvb2SavecbJWhyg2e9VrCNAb0q98xLvYeluocgTEIR Qa0QFzuM-----END CERTIFICATE-----";
enroll.InstallPKCS7(cer);
document.write("<br>证书安装成功");
}
catch (ex) {
document.write("<br>" + ex.description);
return false;
}
}
</script>
<body>
IE自动安装根数字证书<br/><br/>
<%
String strCert = "";
//
//可以在此位置获取数字证书的内容,上边的代码复制过来即可
//
String Agent="";
Agent = request.getHeader("User-Agent");
StringTokenizer st = new StringTokenizer(Agent,";");
st.nextToken();
String userBrowser = st.nextToken();
String userOS = st.nextToken();
out.println("你的操作系统为:");
out.println(userOS);
String activexLib="XEnroll";
if(userOS.indexOf("Windows NT 6.0")>-1 || userOS.indexOf("Windows NT 6.1")>-1)
{
activexLib="CertEnroll";
}
%>
<% if(activexLib.equals("XEnroll"))
{ %>
<object id="XEnroll" classid="clsid:127698e4-e730-4e5c-a2b1-21490a70c8a1" codebase="xenroll.dll"></object>
<table>
<tr>
<td>
<input name="tijiao" id="tijiao" type="button" value=" 下载证书windows " style="cursor:hand" onClick="InstallCertwindows();" >
</td>
</tr>
</table>
<% } else {%>
<object id="objCertEnrollClassFactory" classid="clsid:884e2049-217d-11da-b2a4-000e7bbb2b09"></object>
<table>
<tr>
<td>
<input name="tijiao" id="tijiao" type="button" value=" 下载证书 win7" style="cursor:hand" onClick="InstallCertwin7();" >
</td>
</tr>
</table>
<% } %>
</body>
</html>
<% } %>
</div>
</body>
</html>