我目前正在尝试使用SSL将我的守护进程从一个常规的未加密的守护进程更改为一个守护进程。
我这样做的方式如下:
System.setProperty("javax.net.ssl.keyStore", "keyfile.jks");
System.setProperty("javax.net.ssl.trustStore", "keyfile.jks");
System.setProperty("javax.net.ssl.keyStorePassword", "testtest");
System.out.println("Starting ssl socket for encrypted communication...");
SSLServerSocketFactory sslServerSocketFactory = (SSLServerSocketFactory)SSLServerSocketFactory.getDefault();
SSLServerSocket sslServerSocket = (SSLServerSocket) sslServerSocketFactory.createServerSocket(Settings.listenPortSsl);
SSLServerSocket sslServerSocket = (SSLServerSocket) ssf.createServerSocket(Settings.listenPortSsl);
System.out.println("SSL-Server started.");
while(!stopRequested)
{
System.out.println("SSL-Server - Waiting for connection.");
SSLSocket clientSideConnection = (SSLSocket) sslServerSocket.accept();
// do stuff for the client
}我的密钥存储库看起来如下:
C:\SW Setup>keytool -list -keystore keyfile.jks -storepass testtest
Keystore-Typ: JKS
Keystore-Provider: SUN
Ihr Keystore enthõlt 2 Eintrõge.
localserver, 27.12.2013, trustedCertEntry,
Zertifikatsfingerabdruck (MD5): D1:B1:8F:91:C2:1F:7F:85:70:AE:8B:F3:25:9D:9A:65
myname, 27.12.2013, PrivateKeyEntry,
Zertifikatsfingerabdruck (MD5): AF:DA:AD:F0:09:A5:9E:3C:D3:F0:6C:D9:FE:1F:DC:F0我创建了一个签名请求,该请求由我的(Windows) CA签名并导入到这个密钥存储库中。据我所知,如果只有一对公钥/私钥,它就会选择这把钥匙,不是吗?我还再次导出了公钥并查看了它--它是由我的CA正确地签名的。
但是当我试图连接到我的守护进程时(我只是尝试通过when浏览器连接到它来测试它),它一直呈现一些自签名的证书。
有人知道为什么会这样吗?
顺便说一句:我在上面玩过一些System.setProperty线。如果我输入一个错误的文件名或密码,它将不会启动,因此它似乎真的加载正确的文件。
发布于 2013-12-29 05:46:38
您需要使用与以前相同的别名导入签名的CSR,当它只是一个键区时。
发布于 2013-12-28 23:54:46
在代码检查上浪费了更多的时间之后,我决定重新创建密钥存储库,即使它看起来还可以.但事实并非如此。在创建了一家新店、私钥和csr之后,它终于成功了,我获得了我的官方签名证书!:-)
https://stackoverflow.com/questions/20798652
复制相似问题