2016-09-30 15 views
0

SFTP 용 Apache MINA sshd를 사용하여 ssh 서버를 설정했습니다. 클라이언트가 스푸핑 될 수 없도록 서버 인증을 사용하려고합니다. 문서 페이지에서 그것이 말하는 모두는 다음과 같은 방법 (Apache MINA sshd doc)를 사용하는 것입니다 :Apache MINA sshd에서 서버 인증을 설정하는 방법은 무엇입니까?

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

을하지만 이해, 그 자체에 키 쌍을 생성합니다. 이 서버에 기존 인증서 파일을 사용하려면 어떻게해야합니까?

답변

0

좋아, 찾았습니다.

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 형식으로 저장되어 있습니다 : 다음과 같이 정의 loadKeyPair와

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

: 나는 MappedKeyPairProvider 클래스를 사용했다.

+0

bin \ sshd.bat를 실행하면 인증을 구성 할 수있는 방법을 찾았습니까? –

+0

아니요, 죄송합니다. 나는 프로그래밍으로 모든 것을했다. –

+0

고마워요! 이것을 가로 지르는 사람은 통합 인증이 "Objects.equals (username, password)"로 고정되므로 로그온 할 수 있습니다. "루트", "루트"로. –