如何在java中使用apache qpid库和动态证书字符串(而不是证书路径)创建amqp连接
当前正在通过重写JmsConnectionFactory(qpid apache)的setRemoteURI(“”)创建amqp连接 application-context.xml如何在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">
<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>);