java - 如何在 Apache MINA sshd 中设置服务器身份验证?

标签 java sshd mina

我已经使用 Apache MINA sshd 为 SFTP 设置了 ssh 服务器。我想启用服务器身份验证,这样客户端就不会被欺骗。在文档页面中,它只说使用以下方法( Apache MINA sshd doc ):

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

但据我了解,它会自行生成 key 对。如果我想为此服务器使用现有的证书文件怎么办?

最佳答案

好的,我找到了。我使用了 MappedKeyPairProvider 类:

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

loadKeyPair 定义如下:

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 格式存储。

关于java - 如何在 Apache MINA sshd 中设置服务器身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39791859/

相关文章:

ruby-on-rails - 使用 Mina 和 Foreman 正确部署 Rails 应用程序

ssl - Apache MINA SNI 实现

java - 有在线编程圣经吗?

linux - SSHD AllowGroups,按组控制访问

variables - sshd在每个ssh session 开始时打印环境变量

ssh - 等待提权提示超时

ruby-on-rails-3 - 如何从 mina 部署脚本运行自定义 rake 任务

Java:以度为单位计算两点之间的角度

java - 我父级的类方法没有接收我的实例变量值

java - 漂亮的 HTML5 输出格式