Ich ging zu digicert.com und lud die Zertifikate als p7b herunter, importierte sie dann in den Mac-Schlüsselbund und exportierte sie dann als CER-Dateien. Ich habe sie dann in meine Netbeans-Projektdateien eingefügt, um den folgenden Code auszuprobieren. Ich habe das Gefühl, dass ich mit SSL „im Dunkeln arbeite“ und mir wurde dieser Teil nie beigebracht. Bitte helfen Sie!!
Code, der mit http-Anfragen funktioniert:
Code: Select all
public class ServerRequests {
public static final String CRLF = "\r\n";
ServerSocket s;
protected ServerSocket getServerSocket(int port) throws Exception{
return new ServerSocket(port);
}
public void runServer(int port) throws Exception{
s = getServerSocket(port);
while(true) {
try {
System.out.println("server is running");
Socket us = s.accept();
Handler(us);
} catch (IOException e) {
System.err.println(e);
}
}
}
public void Handler(Socket s) throws Exception, MessagingException {
Code: Select all
protected ServerSocket getServerSocket(int port) throws Exception{
return new ServerSocket(port);
}
public void runServer(int port) throws Exception{
char[] passphrase = "passphrase".toCharArray();
KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
ks.load(null, passphrase);
try (FileOutputStream fos = new FileOutputStream("kss.jks")) {
ks.store(fos, passphrase);
}
CertificateFactory cf = CertificateFactory.getInstance("X.509");
X509Certificate[] chain = new X509Certificate[3];
chain[0] = (X509Certificate) cf.generateCertificate(new FileInputStream("/Users/myname/Desktop/
NetBeansProjects/PHQForum/root.cer"));
chain[1] = (X509Certificate) cf.generateCertificate(new FileInputStream("/Users/myname/Desktop/
NetBeansProjects/PHQForum/rs.cer"));
chain[2] = (X509Certificate) cf.generateCertificate(new FileInputStream("/Users/myname/Desktop
/NetBeansProjects/PHQForum/phq.cer"));
ks.setCertificateEntry(“myalias”, chain[0]);
ks.setCertificateEntry("myalias", chain[1]);
ks.setCertificateEntry("myalias", chain[2]);
KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");
kmf.init(ks, passphrase);
SSLContext sslContext = SSLContext.getInstance("TLSv1.1");
sslContext.init(kmf.getKeyManagers(), null, null);
SSLServerSocketFactory ssf = sslContext.getServerSocketFactory();
SSLServerSocket serverSocket = (SSLServerSocket) ssf.createServerSocket(port);
while(true) {
try {
System.out.println("server is running");
SSLSocket us = (SSLSocket) serverSocket.accept();
Handler(us);
} catch (IOException e) {
System.err.println(e);
}
}
}
public void Handler(SSLSocket s) throws Exception, MessagingException {