相关疑难解决方法(0)

是否可以将普通套接字更改为SSLSocket?

有一个普通的socket服务器监听端口12345;

ServerSocket s = new ServerSocket(12345);
Run Code Online (Sandbox Code Playgroud)

我想知道的是:有可能:

  1. 如果客户端发送http请求,服务器直接处理请求,
  2. 如果客户端发送https请求,服务器将客户端套接字更改为SSLSocket?

谢谢

java ssl

10
推荐指数
1
解决办法
1万
查看次数

java https://localhost (SSL) - 可以在客户端上安装证书吗?

阅读完以下内容后,我仍然坚持制作最低限度的https ://localhost 独立免安装 Web 服务器 Java 应用程序。它需要是无库的,使用 Java 8,并接受来自浏览器的连接,而无需先安装任何特殊的客户端证书。我不清楚自签名证书是否可以实现这一点,因为它只适用于“localhost”。

到目前为止,我已经使用生成了一些关键文件

openssl genrsa -aes128 -out privkey.pem 2048  # makes privkey.pem
openssl req -new -x509 -key privkey.pem # makes cert.crt
Run Code Online (Sandbox Code Playgroud)

我已经拼凑了最基本的 Kotlin 设置函数

private fun ssl():SSLServerSocketFactory {
    val password = "MYPASSWORD".toCharArray()
    val kmf = KeyManagerFactory.getInstance("SunX509")
    val tmf = TrustManagerFactory.getInstance("SunX509")
    val sslContext = SSLContext.getInstance("TLS")

    // initialise the keystore
    KeyStore.getInstance("JKS").let { ks->
        FileInputStream("lig.keystore").use {
            ks.load(it, password)
        }
        kmf.init(ks, password)
        tmf.init(ks)
    }

    // …
Run Code Online (Sandbox Code Playgroud)

java ssl https kotlin

4
推荐指数
1
解决办法
5442
查看次数

标签 统计

java ×2

ssl ×2

https ×1

kotlin ×1