在Linux .Net托管上执行IBM.MQ MQQueueManager期间安全握手失败

iibxawm4  于 2023-03-01  发布在  Linux
关注(0)|答案(2)|浏览(186)
    • bounty将在5天后过期**。回答此问题可获得+50声望奖励。Killer Queen希望引起更多人关注此问题。

尝试将密码规范从TLS_RSA_WITH_AES_256_CBC_SHA256更改为TLS_AES_256_GCM_SHA384。对于TLS_RSA_WITH_AES_256_CBC_SHA256,我可以连接到IBMMQ队列。更改为TLS_AES_256_GCM_SHA384后,我收到错误:

Interop+OpenSsl+SslException: SSL Handshake failed with OpenSSL error - SSL_ERROR_SSL.
---> Interop+Crypto+OpenSslCryptographicException: error:14094412:SSL routines:ssl3_read_bytes:sslv3 alert bad certificate
   --- End of inner exception stack trace ---
   at Interop.OpenSsl.DoSslHandshake(SafeSslHandle context, ReadOnlySpan 1 input, Byte[]& sendBuf, Int32& sendCount)
   at System.Net.Security.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteSslContext& context, ReadOnlySpan 1 inputBuffer, Byte[]& outputBuffer, SslAuthenticationOptions sslAuthenticationOptions)
   --- End of inner exception stack trace ---
   at System.Net.Security.SslStream.ForceAuthenticationAsync[TIOAdapter](TIOAdapter adapter, Boolean receiveFirst, Byte[] reAuthenticationData, Boolean isApm)
   at System.Net.Security.SslStream.AuthenticateAsClient(SslClientAuthenticationOptions sslClientAuthenticationOptions)
   at System.Net.Security.SslStream.AuthenticateAsClient(String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation)
   at IBM.WMQ.Nmqi.MQEncryptedSocket.MakeSecuredConnection()

我应该配置其他东西吗?我将添加应用程序是在Linux上,从. net客户端建立的连接是受管理的。
Openssl配置:

CipherString = @SECLEVEL=1:kEECDH:kRSA:kEDH:kPSK:kDHEPSK:kECDHEPSK:-aDSS:-3DES:!DES:!RC4:!RC2:!IDEA:-SEED:!eNULL:!aNULL:!MD5:-SHA384:-CAMELLIA:-ARIA:-AESCCM8:AES256-SHA256:!ECDHE-RSA-AES256-GCM-SHA384:!AES256-GCM-SHA384:!AES128-SHA256

Ciphersuites = TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256:TLS_AES_128_CCM_SHA256

TLS.MinProtocol = TLSv1.2
TLS.MaxProtocol = TLSv1.3

DTLS.MinProtocol = DTLSv1.2
DTLS.MaxProtocol = DTLSv1.2

SignatureAlgorithms = ECDSA+SHA256:ECDSA+SHA384:ECDSA+SHA512:ed25519:ed448:rsa_pss_pss_sha256:rsa_pss_rsae_sha256:rsa_pss_pss_sha384:rsa_pss_rsae_sha384:rsa_pss_pss_sha512:rsa_pss_rsae_sha512:RSA+SHA256:RSA+SHA384:RSA+SHA512:ECDSA+SHA224:RSA+SHA224:ECDSA+SHA1:RSA+SHA1sh-4

我使用的是**IBMXMSDotnetClient版本9.3.2。**更改密码后出现的错误是:
2059(080B)(RC2059):MQRC_Q_管理员_不可用。
当我在服务器端使用旧版本时,返回了一个密码不匹配错误(没有ssl错误),即它显示我使用了TLS_RSA_WITH_AES_256_CBC_SHA256,而我应该使用TLS_AES_256_GCM_SHA384。

dced5bon

dced5bon1#

根据IANA siteTLS_AES_256_GCM_SHA384是十六进制的0x13,0x02,一般写成1302
您没有提到服务器上运行的MQ的版本,但确实声明它不支持TLS1.3,v9.2是MQ开始支持TLS1.3的时候,所以我假设9.1或更低版本。
根据IBM MQ,Enabling CipherSpecs page 1302不受支持。
我怀疑你真的想要TLS1.2密码TLS_RSA_WITH_AES_256_GCM_SHA384,它是受支持的,是009D。
根据这个testssl.sh openssl mapping site
1302=openssl密码TLS_AES_256_GCM_SHA384,该密码与IANA名称TLS_AES_256_GCM_SHA384匹配,并且是您指定的密码。
009D=openssl密码AES256-GCM-SHA384,其IANA名称为TLS_RSA_WITH_AES_256_GCM_SHA384,与IBM MQ队列管理器的名称相匹配,并支持作为TLS1.2密码。
我建议您更新openssl以指定TLS1.2密码AES256-GCM-SHA384,而不是TLS1.3密码TLS_AES_256_GCM_SHA384

plupiseo

plupiseo2#

TLS_RSA_WITH_AES_256_CBC_SHA256(根据IBM SDK文档,等同于SSL_RSA_WITH_AES_256_CBC_SHA256)仅适用于TLSv1.2协议。
TLS_AES_256_GCM_SHA384仅适用于TLSv1.3协议。
IBM SDK - Cipher Suites Documentation
因此,我首先要确认WAS是否接受TLSv1.3和TLSv1.2协议 *。如果您使用的是TWAS,请检查SSL配置(部署MQ的应用服务器正在使用)以获取QoP设置。在管理控制台中,下面是一个示例路径:
安全性-〉SSL证书和密钥管理〉SSL配置〉NodeDefaultSSL设置〉保护质量(QoP)设置

  • 自定义协议列表在WASv8.5.5.21和v9.0.5.11中引入。

相关问题