0
sslハンドシェイクのためにjavaでsofthsm2とpkcs#11を使用する方法。 私は、softhsm2に格納されたキーを持つsslコンテキストファクトリの実装に関する問題に直面しています。私が利用できるサンプルを提供してください。Pkcs#11 with SSL with java
sslハンドシェイクのためにjavaでsofthsm2とpkcs#11を使用する方法。 私は、softhsm2に格納されたキーを持つsslコンテキストファクトリの実装に関する問題に直面しています。私が利用できるサンプルを提供してください。Pkcs#11 with SSL with java
ここではjavaのsslハンドシェイクのpkcs#11の解決方法を示します。
System.setProperty("javax.net.debug", "ssl");
try {
String configName = "softhsm2.cfg";
Provider p = new SunPKCS11(configName);
System.out.println(p.getName());
Security.addProvider(p);
// Load the key store
char[] pin = "5678".toCharArray();
KeyStore ks = KeyStore.getInstance("PKCS11", p);
ks.load(null, pin);
System.out.println(ks.size());
Enumeration<String> aliases = ks.aliases();
for(;aliases.hasMoreElements();)
{
System.out.println(aliases.nextElement());
}
KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance("SunX509");
//Add to keystore to key manager
keyManagerFactory.init(ks, pin);
//Create the context
SSLContext context = SSLContext.getInstance("TLS");
context.init(keyManagerFactory.getKeyManagers(), null, new SecureRandom());
//Create a socket factory
SSLServerSocketFactory ssf = context.getServerSocketFactory();
//SSLSocketFactory sf = context.getSocketFactory();
//Create the socket
SSLServerSocket s = (SSLServerSocket) ssf.createServerSocket(8888);
printServerSocketInfo(s);
SSLSocket c = (SSLSocket) s.accept();
'addProvider()'が-1を返した場合、プロバイダはすでにインストールされています。それは例外を投げる理由ではない。 – EJP
はあなたの提案でコードを更新しました。 – Slok