2016-09-30 11 views
0

SFTP用にApache MINA sshdを使用してsshサーバーをセットアップしました。私はクライアントがなりすましできないようにサーバ認証を有効にしたい。ドキュメント・ページでは、それは言うすべては、以下の方法(Apache MINA sshd doc)を使用することです:Apache MINA sshdでサーバ認証を設定する方法は?

sshd.setKeyPairProvider(new SimpleGeneratorHostKeyProvider("hostkey.ser")); 

をしかし、私は理解して、それは自分自身で鍵ペアを生成します。このサーバーに既存の証明書ファイルを使用する場合はどうすればよいですか?

答えて

0

私はそれを見つけました。次のように定義されたloadKeyPairで

sshd.setKeyPairProvider(new MappedKeyPairProvider(loadKeyPair("certificateFile.p12"))); 

:私はMappedKeyPairProviderクラスを使用

public static loadKeyPair(String path) throws KeyStoreException, CertificateException, NoSuchAlgorithmException, IOException, UnrecoverableKeyException, NoSuchProviderException { 
    KeyStore p12 = KeyStore.getInstance("pkcs12"); 
    p12.load(new FileInputStream(path), "certPassword".toCharArray()); 
    java.security.cert.Certificate cert = p12.getCertificate("myAlias"); 
    PublicKey publicKey = cert.getPublicKey(); 
    PrivateKey key = (PrivateKey)p12.getKey("myAlias", "certPassword".toCharArray()); 
    return new KeyPair(publicKey, key); 
} 

私の証明書がPKCS12形式で格納されていることに注意してください。

+0

bin \ sshd.batを実行している場合、認証を設定する方法はありますか? –

+0

いいえ、申し訳ありません。私はプログラム的にすべてそれをやった。 –

+0

ありがとう!これを遭遇する者にとって:統合認証は "Objects.equals(username、password)"に固定されているので、例えばログインすることができます。 「root」、「root」とします。 –

関連する問題