Java 中如何实现动态生成证书,像 Go 那样。
比如 Go
func main() {
ln, _ := tls.Listen("tcp", ":433", &tls.Config{
GetCertificate: func(info *tls.ClientHelloInfo) (*tls.Certificate, error) {
// 使用 info.ServerName 从 DB 或者临时生成
cert := generateX509Certificate(info.ServerName)
return cert, nil
},
})
http.ServeTLS(ln, nil, "", "")
}
Java 有类似的机制吗。哪怕是并发请求,也可以控制只有一个请求触发生成证书,其他请求 hold 住,等证书一旦生成成功,所有请求立刻进行接下来的握手(超时的不算)
Java 中不同的框架处理方式一样吗?
比如 javax.net.ssl.SSLContext 和使用 netty 的 spring 全家桶都适用的方法?
这是动态的吗?
在Java中,可以使用Bouncy Castle库来动态生成证书。Bouncy Castle是一个流行的加密库,提供了许多Java中缺少的加密算法和工具,包括证书生成和管理。