Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中使用apache qpid库和动态证书字符串(而不是证书路径)创建amqp连接_Java_Ssl_Dynamic_Amqp_Qpid - Fatal编程技术网

如何在java中使用apache qpid库和动态证书字符串(而不是证书路径)创建amqp连接

如何在java中使用apache qpid库和动态证书字符串(而不是证书路径)创建amqp连接,java,ssl,dynamic,amqp,qpid,Java,Ssl,Dynamic,Amqp,Qpid,当前正在通过重写JmsConnectionFactory(qpid apache)的setRemoteURI(“”)创建amqp连接 application-context.xml <bean id="amqpConfig" class="org.apache.camel.component.jms.JmsConfiguration"> <property name="connectionFactory">

当前正在通过重写JmsConnectionFactory(qpid apache)的setRemoteURI(“”)创建amqp连接 application-context.xml

<bean id="amqpConfig" class="org.apache.camel.component.jms.JmsConfiguration">
    <property name="connectionFactory">
        <bean class="com.abc.AMQPSConnectionFactory">
        </bean>
    </property>
</bean>
    
    
<bean id="amqp" class="org.apache.camel.component.amqp.AMQPComponent">
    <property name="testConnectionOnStartup" value="true" />
    <property name="configuration" ref="amqpConfig" />
</bean>
如何通过在运行时传递base 64编码的证书字符串(而不是KEYSTORELOCATION)、该证书的base 64编码密码(而不是KEYSTOREPASSWORD)和KEYSTORETYPE来创建amqp连接


问题:我无法将证书保留在路径上(以在uri中提供密钥重定位),但需要使用证书字符串本身

与您所要求的内容最匹配的是SSLContext覆盖,它允许您提供客户端在SSL握手期间使用的自己的SSLContext。没有直接向连接工厂提供证书的机制,我怀疑会添加任何此类机制

 JmsConnectionFactory factory = new JmsConnectionFactory("amqps://localhost:5673");
 factory.setSslContext(<your-own-context>);
JmsConnectionFactory=新的JmsConnectionFactory(“amqps://localhost:5673");
setSslContext();

您可以分享一个如何重写SSLContext的示例吗添加了一个代码段,这些方法都记录在factoryfinal InputStream in=GetCertificateAInputStream()中;final KeyStore ks=KeyStore.getInstance(“PKCS12”);加载(in,getPassword());KeyManagerFactory kmf=KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());init(ks,getPassword());final TrustManagerFactory tmf=TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());tmf.init(ks);SSLContext context=SSLContext.getInstance(“TLSv1.2”);init(kmf.getKeyManager(),tmf.getTrustManager(),null);问题原因中的结果:一般SSLEngine问题
 JmsConnectionFactory factory = new JmsConnectionFactory("amqps://localhost:5673");
 factory.setSslContext(<your-own-context>);