我的任务是用PKI编写通信器。我考虑X.509证书的实现(在Java中) - 我指的是允许数据/消息机密性的SSL / TLS,以及消息完整性的消息验证代码。所有这些都是我在一些文献中读到的,而且都是理论上的。我不确定我是否正确思考。谁能够很好地理解PKI的想法,能给我任何建议吗(例如网站,它对实施PKI有很好的解释)?
答案 0 :(得分:1)
正如ntoskrnl评论的那样,即使专家也很难做到这一点。
以下是SSL连接所需的PKI的基本高级视图:
运行在Tomcat之类的可以配置为SSL的Web服务。在服务器端,标识将指向服务器密钥证书。对于双向SSL,服务器上还会有可信CA证书的列表或密钥库。除非客户的证书由其中一个受信任的CA签署,否则服务器将不允许客户端连接。
在客户端,您还需要可信CA证书的列表或密钥库,并且服务器的证书必须由其中一个CA签名。建立SSL连接时,Java将使用客户机ID密钥和证书以及信任密钥库。如果您搜索Stack Overflow,您应该找到大量的Java SSL连接示例。
要创建PKI,OpenSSL是一个很好的工具。这是一个有用的网站:
https://pki-tutorial.readthedocs.org/en/latest/simple/index.html
对于密钥及其相应的证书,首先创建私钥,然后创建证书签名请求(CSR)。然后,CSR由CA密钥签名,并成为证书。证书包含与用于创建CSR的私钥对应的公钥。
对于MAC,这里有一个关于HMAC的Java示例:HMAC-SHA1: How to do it properly in Java?