Java 如何设置要用于使用HttpsURLConnection创建的套接字的密码和协议列表?
获取Java 如何设置要用于使用HttpsURLConnection创建的套接字的密码和协议列表?,java,ssl,httpsurlconnection,Java,Ssl,Httpsurlconnection,获取SSLSocketFactory的正常方法是使用TrustManager、KeyManager和SecureRandom初始化一个新的SSLContext,并使用getSocketFactory()方法。但是,这不允许我启用所需的密码套件或协议 HttpsURLConnection允许进行此类更改的唯一配置是通过设置其默认值SSLSocketFactory。我可以创建一个扩展SSLSocketFactory的类,覆盖getDefaultCipherSuite()方法,并包装createSoc
SSLSocketFactory
的正常方法是使用TrustManager
、KeyManager
和SecureRandom
初始化一个新的SSLContext
,并使用getSocketFactory()
方法。但是,这不允许我启用所需的密码套件或协议
HttpsURLConnection
允许进行此类更改的唯一配置是通过设置其默认值SSLSocketFactory
。我可以创建一个扩展SSLSocketFactory
的类,覆盖getDefaultCipherSuite()
方法,并包装createSocket()
创建的套接字,以设置所需的密码和协议。但是,此方法不允许我为连接初始化TrustManager
是否有一种方法可以同时执行-设置密码套件和协议以及初始化信任管理器?获取由
SSLContext.getSocketFactory()
获得的SSLSocketFactory
并将其包装在SSLSocketFactory
的自定义子类中,该子类将委托给从SSLContext
获得的子类,但是在createSocket()
中也设置了所需的密码。请参阅JSSE参考指南。您可以通过系统属性设置密码套件。如果通过系统属性设置,密码套件将变为全局密码套件。我可能只想为一个特定的连接或一个特定的应用程序设置它。同意。但是,您没有在问题中说明该要求。为了完整性(刚刚关闭),相关的系统属性是https.cipherSuites
。