私は桟橋のウェブサーバーを持っています。証明書をトラストストアに登録しようとしています。
証明書は正しく登録されますが、クライアントが登録済みの証明書で認証しようとすると、証明書がトラスト ストアに見つかりません。
ただし、証明書はトラストストアにありますが、jetty によって読み込まれていません。
Tomcatでも同じ問題が発生しますが、jmxを使用してCONnectorMBeanを再起動するとTomcatで動作し始めます。
JMXを使用してsslsocketconnectorを再起動するとjettyで再起動されますが、接続が切断されるため、証明書をリロードできず、トラストストアから証明書をロードした後にクライアントにメッセージを送信できません。
次のコードを使用して sslsocketconnector を再起動しようとしています
try{
MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer();
Set names = mBeanServer.queryNames(new ObjectName("*:*"), null);
Iterator it=names.iterator();
while( it.hasNext()) {
ObjectName oname= (ObjectName)it.next();
MBeanInfo minfo = mBeanServer.getMBeanInfo(oname);
if (minfo.getClassName().equals("org.mortbay.jetty.security.SslSocketConnector")) {
System.out.println("found ssl socket connector... will try to restart it");
System.out.println("Restarting SSL Connector on port ");
Object params[] = {};
String signature[] = {};
;
/**
* Stop and restart the connector to get it to re-read the certificate trustfile
*/
mBeanServer.invoke(oname, "stop", params, signature);
mBeanServer.invoke(oname, "start", params, signature);
}
}
}
catch (Exception e) {
System.out.println("Did not restart SSL Connector: " + e);
e.printStackTrace();
throw e;
}
サーバーを再起動して既存のソケットを壊さずにトラストストアに証明書をリロードする良い方法を誰か教えてもらえますか??
ありがとう