I'm trying to run a SSHD demo, but encountered the 'BouncyCastle not registered' error:
import java.io.File;
import java.io.IOException;
import org.apache.sshd.server.SshServer;
import org.apache.sshd.server.keyprovider.SimpleGeneratorHostKeyProvider;
import org.apache.sshd.server.shell.ProcessShellFactory;
public class MollySshServerMock {
public static void main(String[] args) throws IOException {
SshServer sshd = SshServer.setUpDefaultServer();
sshd.setPort(22);
sshd.setKeyPairProvider(new SimpleGeneratorHostKeyProvider(new File("hostkey.ser")));
sshd.setShellFactory(new ProcessShellFactory(new String[] { "/bin/sh", "-i", "-l" }));
sshd.start();
}
}
The error:
[main] INFO org.apache.sshd.common.util.SecurityUtils - BouncyCastle not registered, using the default JCE provider
The environment: Windows 7 64bit, STS 3.7.2, JDK 1.8
Tried [1] method, but failed.
Then tried [2],
- Download bouncycastle library at http://www.bouncycastle.org/latest_releases.html (For me its bcprov-jdk15on-154.jar and bcprov-ext-jdk15on-154.jar).
- Copy theses files (eg: bcprov-jdk15on-154.jar and bcprov-ext-jdk15on-154.jar) in /path_to_your_jvm/jre/lib/ext. (e.g: /opt/jdk/jdk1.8.0_40/jre/lib/ext)
edit /path_to_your_jvm/jre/lib/security/java.security and add the following line : security.provider.11=org.bouncycastle.jce.provider.BouncyCastleProvider
this method works, the output is:
[main] INFO org.apache.sshd.common.util.SecurityUtils - BouncyCastle already registered as a JCE provider
References:
[1] http://stackoverflow.com/questions/8171802/using-bouncycastle-for-a-simple-https-query
[2] http://totalprogus.blogspot.hk/2012/09/crash-could-not-start-crasshd-failed-to.html