如何设置用于使用HttpsURLConnection创建的套接字的密码和协议列表?

获取SSLSocketFactory的常规方法是使用TrustManagerKeyManagerSecureRandom初始化新的SSLContext并使用getSocketFactory()方法。 但是,这不允许我启用所需的密码套件或协议。

HttpsURLConnection允许进行此类更改的唯一配置是通过设置其默认SSLSocketFactory 。 我可以创建一个扩展SSLSocketFactory并覆盖getDefaultCipherSuites()方法的类,并包装createSocket()创建的套接字以设置所需的密码和协议。 但是,这种方法不允许我为连接初始化TrustManager

有没有一种方法可以做到 – 设置密码套件和协议并初始化信任管理器?

获取SSLContext.getSocketFactory()获取的SSLSocketFactory并将其包装在SSLSocketFactory的自定义子类中,该子类委托从SSLContext获取的子类,但在createSocket()也设置所需的密码。

请参阅JSSE参考指南。 您可以通过系统属性设置密码套件。