这并不是应该通过设计实现的,但出于安全考虑,我想知道如果有多个证书符合特定CA签名的要求,"正确"的证书将如何发送到服务器?
我正在使用一个简单的SSL JAVA客户端示例,连接到Apache HTTPD。
我尝试了四个证书的测试,每次删除选择的证书并记录下一个被选择的证书。我找不到一个合理的逻辑(例如:日期、别名等),除了可能是证书的"sha256"的字典序排序。但这对我来说似乎不太可能......
示例客户端执行以下操作:
System.setProperty("javax.net.ssl.keyStore","device.p12");
System.setProperty("javax.net.ssl.keyStorePassword","password");
System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");
System.setProperty("javax.net.ssl.trustStore","truststore.jks");
System.setProperty("javax.net.ssl.trustStorePassword","password");
SSLSocketFactory factory = (SSLSocketFactory) SSLSocketFactory.getDefault();
SSLSocket sslSock = (SSLSocket) factory.createSocket("87.69.60.100",443);
BufferedWriter wr = new BufferedWriter(new OutputStreamWriter(sslSock.getOutputStream(), "UTF8"));
wr.write("GET /lather HTTP/1.1\r\nhost: 87.69.60.100\r\n\r\n");
wr.flush();
Apache的配置为:
SSLCACertificateFile rootCA.crt
SSLVerifyClient require
我找不到相关的文档来回答这个问题。我还想知道,是否有可能Apache会以某种方式转发多个证书链?(比如说,当一个行为异常的客户端发送一些奇怪的东西时)。
谢谢!