//snippet
MQEnvironment.properties = GetConnectionProperties();

_queueManager = new MQQueueManager(QueueManager);

//end of snippet

    private Hashtable GetConnectionProperties()
    {
        Hashtable properties = new Hashtable();
        properties.Add(MQC.USER_ID_PROPERTY, Environment.UserName);
        properties.Add(MQC.HOST_NAME_PROPERTY, MQHostname);
        properties.Add(MQC.PORT_PROPERTY, MQPortNumber);
        properties.Add(MQC.CHANNEL_PROPERTY, MqChannel);
        properties.Add(MQC.TRANSPORT_PROPERTY, MQC.TRANSPORT_MQSERIES_CLIENT);

        if (_useSSL)
        {
            properties.Add(MQC.SSL_CIPHER_SUITE_PROPERTY, CipherSuite);
            properties.Add(MQC.SSL_PEER_NAME_PROPERTY, SslPeerName);
            properties.Add(MQC.SSL_CIPHER_SPEC_PROPERTY, CipherSpec);
            properties.Add(MQC.SSL_FIPS_REQUIRED_PROPERTY, FipsRequired);
            properties.Add(MQC.SSL_CERT_STORE_PROPERTY, SslKeyRepository);
        }

        return properties;
    }

throws {"MQRC_KEY_REPOSITORY_ERROR"}

sslkeyrepository只是一个包含.tab.arm.crl.crt.jks.kdb.rdb.sth文件的目录位置
你知道我遗漏了什么吗?

最佳答案

sslkeyrepository必须指向一个.kdb文件,而不是像您所做的那样指向一个目录。例如,客户端应用程序将证书存储属性编码为:

properties.Add(MQC.SSL_CERT_STORE_PROPERTY, "C:\\MyApp\\SSL\\client_certstore");

还要注意,我没有将文件扩展名后缀为keystore file name。mq客户端将自动添加“.kdb”扩展名。请参阅link了解更多详细信息。
另外,您只需要在应用程序中设置ssl_cipher_suite_属性。您没有设置ssl_cipher_spec_属性。见表here

10-08 12:54