Ben*_*n H 4 java ssl https kotlin
阅读完以下内容后,我仍然坚持制作最低限度的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)
}
// setup the HTTPS context and parameters
sslContext.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null)
return sslContext.serverSocketFactory
}
ssl().createServerSocket().use { serverSocket ->
serverSocket.reuseAddress = true
serverSocket.bind(InetSocketAddress(port))
logger.info { "WebServer ready and listening on ${serverSocket.localPort}" }
Run Code Online (Sandbox Code Playgroud)
但我在如何完成它时遇到了麻烦:我需要创建一个lig.keystore
文件吗?甚至可以在客户端浏览器上安装证书的情况下完成此操作吗?
通过 HTTPS 在客户端(浏览器)和服务器之间建立安全连接有两种常见方法:
您可以为服务器获取由用户 Web 浏览器默认信任的根证书颁发机构 (CA) 签名的 SSL 证书。
您可以生成自签名 SSL 证书,并让用户将其作为可信证书导入到 Web 浏览器中。
到目前为止,您所做的似乎是生成一个包含自签名证书的服务器端密钥库,并(或多或少)配置 Kotlin 服务器来使用它。问题出在客户端(浏览器)。在没有用户或用户系统管理员参与的情况下,没有安全的方法可以让浏览器信任自签名证书。(安全......就像对用户安全一样!)
并且任何合法的 CA 都不应该为“localhost”颁发 SSL 证书;例如https://www.ssl2buy.com/wiki/how-to-get-ssl-certificate-for-web-applications-that-runs-on-localhost
僵局。
好吧,让我们退一步。使用 HTTPS / SSL 的目的是确保:
用户的 Web 浏览器正在与正确的服务器通信,而不是与冒充它的其他服务器通信。
浏览器和服务器之间的连接是加密的,因此任何第三方都无法窥探流量。
但你正试图这样做是为了建立localhost
联系。IPlocalhost
地址是环回地址。除非操作系统内核受到损害,否则可以保证通过环回连接发送的网络数据包不会离开主机。
您可以忽略“冒充”问题。假设用户的计算机没有受到损害,其他人都无法在用户的计算机上启动“假”服务器。
您可以忽略“窥探”问题。假设用户的机器没有受到损害:
所以,解决方案很简单。使用“http”作为“localhost”连接。它应该是安全的......假设用户的机器没有受到损害。
注意:如果用户的计算机已被破坏,那么坏人就会采用其他方法来拦截 SSL 无法防范的流量。
归档时间: |
|
查看次数: |
5442 次 |
最近记录: |