TLSProjekt/server/TLSServer.java
2025-03-23 12:04:21 +01:00

62 lines
2.6 KiB
Java

// Douglas Fjällrud, Axel Blomén, Grupp 35
package server;
import javax.net.ssl.*;
import java.io.*;
import java.security.*;
import java.security.cert.CertificateException;
public class TLSServer {
private static final String SERVER_KEYSTORE_PATH = "../server.p12";
private static final String SERVER_KEYSTORE_PASSWORD = "server";
private static final int TLS_PORT = 8043;
public static void main(String[] args) {
try {
KeyStore keyStore = KeyStore.getInstance("PKCS12");
try (FileInputStream fis = new FileInputStream(SERVER_KEYSTORE_PATH)) {
keyStore.load(fis, SERVER_KEYSTORE_PASSWORD.toCharArray());
}
KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");
kmf.init(keyStore, SERVER_KEYSTORE_PASSWORD.toCharArray());
KeyManager[] keyManagers = kmf.getKeyManagers();
SSLContext sslContext = SSLContext.getInstance("TLSv1.3");
sslContext.init(keyManagers, null, new SecureRandom());
SSLServerSocketFactory sslServerSocketFactory = sslContext.getServerSocketFactory();
try (SSLServerSocket sslServerSocket =
(SSLServerSocket) sslServerSocketFactory.createServerSocket(TLS_PORT)) {
System.out.println("TLS-server startad. Lyssnar på port " + TLS_PORT + "...");
while (true) {
try (SSLSocket sslSocket = (SSLSocket) sslServerSocket.accept()) {
String[] enabledCiphers = { "TLS_AES_128_GCM_SHA256" };
sslSocket.setEnabledCipherSuites(enabledCiphers);
sslSocket.startHandshake();
BufferedReader br = new BufferedReader(
new InputStreamReader(sslSocket.getInputStream()));
PrintWriter pw = new PrintWriter(sslSocket.getOutputStream(), true);
String line;
while ((line = br.readLine()) != null) {
System.out.println("Mottaget: " + line);
pw.println("Echo: " + line);
}
} catch (IOException e) {
System.err.println("Fel vid hantering av klientanslutning: " + e.getMessage());
}
}
}
} catch (KeyStoreException | IOException | NoSuchAlgorithmException
| CertificateException | KeyManagementException | UnrecoverableKeyException e) {
e.printStackTrace();
}
}
}