我有一台托管多个驱动器的富士通 TX140 S2 服务器。
最近登录 iRMC 网络服务器,在大风时关闭服务器,以防停电(UPS 订购),无法访问网络服务器。
ERR_SSL_VERSION_OR_CIPHER_MISMATCH
我认为这是一个浏览器问题,因此安装了 Firefox 版本 1,并且能够从中进入 fujitsu Web 服务器,所以这显然是一个浏览器问题,但这不在我的职权范围内。
帮助表示赞赏。
从 java 应用程序调用第三方 API 时,我遇到了一些麻烦。外部 API 至少需要以下密码之一:
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
TLS_DHE_RSA_WITH_AES_256_CBC_SHA256
TLS_DHE_RSA_WITH_AES_128_CBC_SHA256
TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
我按照此处的说明进行操作:https ://confluence.atlassian.com/stashkb/list-ciphers-used-by-jvm-679609085.html尝试升级我的应用程序服务器上的可用密码。但是,升级后我仍然没有看到列出的任何兼容密码。
我怀疑问题是我的服务器正在运行 jdk 1.7 。这是一个遗留应用程序,所以很遗憾我无法升级到更新的 jdk。有没有办法将这些密码添加到我现有的 java 安装中?
更新: 我想出了如何添加额外的密码,但它似乎没有帮助。在我的套接字工厂中,我添加了一些这样的代码:
private Socket acceptOnlyTLS12(Socket socket) {
if (!(socket instanceof SSLSocket))
return socket;
SSLSocket sslSocket = (SSLSocket) socket;
sslSocket.setEnabledProtocols(new String[] { "TLSv1.2" });
List<String> ciphers = new ArrayList<String>(Arrays.asList(sslSocket.getEnabledCipherSuites()));
ciphers.add("TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256");
sslSocket.setEnabledCipherSuites(ciphers.toArray(new String[] {}));
return sslSocket;
}
我在某个地方还缺少另一个步骤吗?是否有某种方法可以获取有关 ssl 握手失败原因的其他信息?
我正在尝试使用 ansible ad-hoc 测试与几个网络设备的连接,Ansible 安装在 Ubuntu 20.04.2 LTS 上。
问题:SSH 不工作,因为设备的密钥交换方法只有 ssh-RSA,服务器不支持。试图强制执行 ssh-RSA 但我知道它不可用,因为它没有作为密码协商的密钥交换方法之一发送。
Ansible_输出:
(venv) omera@sandbox:~/code/ansible/play_06$ ansible all -m ping
edge_02 | UNREACHABLE! => {
"changed": false,
"msg": "Failed to connect to the host via ssh: Unable to negotiate with 192.168.1.201 port 22: no matching key exchange method found. Their offer: diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1",
"unreachable": true
}
edge_01 | UNREACHABLE! => {
"changed": false,
"msg": "Failed to connect to the host via ssh: Unable to negotiate with 192.168.1.200 port 22: no matching key exchange method found. Their offer: diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1",
"unreachable": true
}
core_01 | UNREACHABLE! => {
"changed": false,
"msg": "Failed to connect to the host via ssh: Unable to negotiate with 192.168.1.202 port 22: no matching key exchange method found. Their offer: diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1",
"unreachable": true
edge_02_debug_output:
Edge_02#
*Jun 7 07:49:14.738: SSH0: starting SSH control process
*Jun 7 07:49:14.738: SSH0: sent protocol version id SSH-1.99-Cisco-1.25
*Jun 7 07:49:14.741: SSH0: protocol version id is - SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.2
*Jun 7 07:49:14.741: SSH2 0: Server certificate trustpoint not found. Skipping hostkey algo = x509v3-ssh-rsa
*Jun 7 07:49:14.741: SSH2 0: kexinit sent: hostkey algo = ssh-rsa
*Jun 7 07:49:14.741: SSH2 0: kexinit sent: encryption algo = aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc
*Jun 7 07:49:14.741: SSH2 0: kexinit sent: mac algo = hmac-sha1,hmac-sha1-96
*Jun 7 07:49:14.741: SSH2 0: SSH2_MSG_KEXINIT sent
*Jun 7 07:49:14.741: SSH2 0: SSH2_MSG_KEXINIT received
*Jun 7 07:49:14.741: SSH2 0: kex: client->server enc:aes128-ctr mac:hmac-sha1
*Jun 7 07:49:14.741: SSH2 0: kex: server->client enc:aes128-ctr mac:hmac-sha1
*Jun 7 07:49:14.741: %SSH-3-NO_MATCH: No matching kex algorithm found: client curve25519-sha256,[email protected],ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group14-sha256,ext-info-c server diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
我担心的是是否可以将 RSA 设置为 ubuntu 上的密钥交换方法(ansible 正在使用 sshpass)?
ii sshpass 1.06-1 amd64 Non-interactive ssh password authentication
OpenSSL 1.1.1d 10 Sep 2019 (Library: OpenSSL 1.1.1g 21 Apr 2020)
openssl.cnf
配置在文件的顶部
openssl_conf = default_conf
在文件的底部
[default_conf]
ssl_conf = ssl_sect
[ssl_sect]
system_default = system_default_sect
[system_default_sect]
MinProtocol = TLSv1.2
CipherString = DEFAULT@SECLEVEL=1
没有Ciphersuites
设置指令。
但是,当我询问启用的密码时openssl ciphers -s -v
,我得到的密码如下:
DHE-RSA-AES256-SHA SSLv3 Kx=DH Au=RSA Enc=AES(256) Mac=SHA1
ECDHE-ECDSA-AES128-SHA TLSv1 Kx=ECDH Au=ECDSA Enc=AES(128) Mac=SHA1
ECDHE-RSA-AES128-SHA TLSv1 Kx=ECDH Au=RSA Enc=AES(128) Mac=SHA1
DHE-RSA-AES128-SHA SSLv3 Kx=DH Au=RSA Enc=AES(128) Mac=SHA1
我应该定义一个Ciphersuites
设置,还是 openssl ciphers -s -v
以某种方式不可靠?
-s仅列出支持的密码:与安全级别、最小和最大协议版本一致的密码。
虽然 SecLevel 1 允许 SSLv3 和 TLSv1,但 MinProtocol 不允许。
资料来源:
我的 TLS 配置中有以下内容,但我唯一的问题TLS_AES_128_GCM_SHA256
是 128 位密码,我想删除它:
smtpd_tls_eecdh_grade = ultra
smtp_tls_eecdh_grade = ultra
smtpd_tls_mandatory_exclude_ciphers = MD5, DES, ADH, RC4, PSD, SRP, 3DES, eNULL, aNULL, ARIA, RSA, AES128
smtpd_tls_exclude_ciphers = MD5, DES, ADH, RC4, PSD, SRP, 3DES, eNULL, aNULL, ARIA, RSA, AES128
smtp_tls_mandatory_exclude_ciphers = MD5, DES, ADH, RC4, PSD, SRP, 3DES, eNULL, aNULL, ARIA, RSA, AES128
smtp_tls_exclude_ciphers = MD5, DES, ADH, RC4, PSD, SRP, 3DES, eNULL, aNULL, ARIA, RSA, AES128
tls_high_cipherlist = ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384
如果我尝试更改tls_high_cipherlist
以某种方式禁用 TLSv1.3 密码,我不能:
tls_high_cipherlist = ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:!TLS_AES_128_GCM_SHA256
最后添加!TLS_AES_128_GCM_SHA256
不起作用。我怎样才能做到这一点?即使我在最后添加了所需的密码,它也不会那样工作。
我可以通过以下方式在 Apache 上做到这一点:
SSLCipherSuite TLSv1.3 TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256
但是,我在后缀中找不到与 TLSv1.3 相关的任何内容。
我的服务器支持的 TLSv1.2 密码套件:
xc030 ECDHE-RSA-AES256-GCM-SHA384 ECDH 384 AESGCM 256 TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
xcca8 ECDHE-RSA-CHACHA20-POLY1305 ECDH 384 ChaCha20 256 TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
x9f DHE-RSA-AES256-GCM-SHA384 DH 4096 AESGCM 256 TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
我正在使用以下密码,我今天一直在更新,如果其中有任何不完整,请不要担心。帮我禁用AES128。
SSLCipherSuite ECDHE-ECDSA-AES256-GCM-SHA384:!AES128
它仍在使用这个:
TLS_AES_128_GCM_SHA256 (0x1301)
SSLCipherSuite TLSv1.3 TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256
SSLCipherSuite ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384
SSLOpenSSLConfCmd ECDHParameters secp384r1
SSLHonorCipherOrder On
SSLProtocol -all +TLSv1.2 +TLSv1.3
SSLPassPhraseDialog builtin
SSLSessionCache "shmcb:/usr/local/apache2/logs/ssl_scache(512000)"
SSLSessionCacheTimeout 300
SSLUseStapling On
SSLStaplingCache "shmcb:ssl_stapling(32768)"
<Virtualhost *:443>
SSLEngine On
SSLOptions +StdEnvVars +ExportCertData
SSLCertificateFile "/path/to/trusted/ssl.crt"
SSLcertificateKeyFile "/path/to/its/ssl.key"
</Virtualhost>
根据您的需要调整日志文件位置。如果存在任何漏洞,请通知:)
此配置仅适用于 4096 位证书。您可以将其调整为 2048 位。
我正在使用 MEMCM 任务序列来构建运行 Windows Server 2019 的服务器。到目前为止,我使用该操作系统构建了 22 台服务器。在 OSD 结束时,其中 20 个我只有 10 个密码套件可供使用。
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P384
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P256
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P384
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P256
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384
TLS_RSA_WITH_AES_128_CBC_SHA256
TLS_RSA_WITH_AES_128_CBC_SHA
TLS_RSA_WITH_AES_256_CBC_SHA256
TLS_RSA_WITH_AES_256_CBC_SHA
在具有更多密码套件的两台服务器上,我有以下 31 个可用的密码套件。
TLS_AES_256_GCM_SHA384
TLS_AES_128_GCM_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
TLS_RSA_WITH_AES_256_GCM_SHA384
TLS_RSA_WITH_AES_128_GCM_SHA256
TLS_RSA_WITH_AES_256_CBC_SHA256
TLS_RSA_WITH_AES_128_CBC_SHA256
TLS_RSA_WITH_AES_256_CBC_SHA
TLS_RSA_WITH_AES_128_CBC_SHA
TLS_RSA_WITH_3DES_EDE_CBC_SHA
TLS_RSA_WITH_NULL_SHA256
TLS_RSA_WITH_NULL_SHA
TLS_PSK_WITH_AES_256_GCM_SHA384
TLS_PSK_WITH_AES_128_GCM_SHA256
TLS_PSK_WITH_AES_256_CBC_SHA384
TLS_PSK_WITH_AES_128_CBC_SHA256
TLS_PSK_WITH_NULL_SHA384
TLS_PSK_WITH_NULL_SHA256
在具有有限密码套件集的服务器上,我添加了启用 TLS 1.2 所需的注册表项HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2
并执行了重新启动,但仍然没有更多内容。在具有 31 个密码套件的服务器上,我不知道发生了什么变化,因此它们可用。我也尝试过使用Enable-TlsCipherSuite -Name XXX
,但没有成功。最后,服务器将使用 2020 年 8 月的更新进行更新。
知道为什么缺少密码以及如何添加它们吗?
再会,
我有一个 IBM WAS 自由服务器,它位于 OS 下redhat linux
,openjdk
版本为 1.8.0_242。
我收到一份pentest
报告,抱怨此服务器正在使用中等强度的密码。该pentest
报告还建议我改用套件或更高版本TLS 1.2
。AES-GCM
目前我的服务器只启用 TLSv1.2。
我想问的第一件事是如何禁用/删除服务器中的中等强度密码?
第二件事是,我想知道如何检查该服务器是否使用中等强度的密码。这样我就可以知道我所做的任何更改是否已禁用/删除中等强度密码。
我有openssl
如下尝试命令:
openssl s_client -connect 10.7.5.65:9443 -tls1_2
我得到的结果如下:
Peer signing digest: SHA512
Server Temp Key: DH, 1024 bits
---
SSL handshake has read 1710 bytes and written 479 bytes
---
New, TLSv1/SSLv3, Cipher is DHE-RSA-AES128-GCM-SHA256
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
Protocol : TLSv1.2
Cipher : DHE-RSA-AES128-GCM-SHA256
我DHE-RSA-AES128-GCM-SHA256
在结果中看到了 ,但这是否表明我的服务器正在使用中等强度密码?
另一种方式是我参考这篇文章的方式如何列出特定网站提供的 SSL/TLS 密码套件?,我运行脚本,它显示我的密码 1 并告诉我它是否有 ssl 握手失败,有可能从这里知道这个服务器是否有中等强度的密码?
我也尝试了一些东西,其中之一是我编辑 jvm java.security,删除3DES_EDE_CBC
in jdk.tls.legacyAlgorithms
,我重新启动服务器,但openssl s_client -connect 10.7.5.65:9443 -tls1_2
命令的结果也相同,因此我不确定它是否修复了这个问题。
请提供帮助和建议。
对于我的Adobe CEP 项目,我尝试从 Javascript 端通过 https 调用 REST API:
var xmlhttp = new XMLHttpRequest();
xmlhttp.open('GET', 'https://***/api/books', true);
xmlhttp.setRequestHeader('Authorization', 'Basic NDI5MDk...');
xmlhttp.send(null);
if(xmlhttp.status == 200) {
alert(xmlhttp.responseText);
}
该代码在控制台中触发以下输出:
net::ERR_SSL_VERSION_OR_CIPHER_MISMATCH
查看对面的nginx服务器日志,只有一条错误信息:
2016/09/29 11:25:34 [info] 7048#7048: *4396957 SSL_do_handshake() failed (SSL: error:1408A0C1:SSL routines:ssl3_get_client_hello:no shared cipher) while SSL handshaking, client: **.**.**.**, server: 0.0.0.0:443
其他客户端连接到服务器没有问题。Web 服务器非常稳定且维护良好,运行 TSL 1.2 并支持所有安全密码:
443/tcp open https
| ssl-enum-ciphers:
| TLSv1.2:
| ciphers:
| TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (secp256r1) - A
| TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (secp256r1) - A
| TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 (dh 4096) - A
| TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 (dh 4096) - A
| TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (secp256r1) - A
| TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 (secp256r1) - A
| TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 (dh 4096) - A
| TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 (dh 4096) - A
| TLS_RSA_WITH_AES_128_GCM_SHA256 (rsa 2048) - A
| TLS_RSA_WITH_AES_256_GCM_SHA384 (rsa 2048) - A
| TLS_RSA_WITH_AES_128_CBC_SHA256 (rsa 2048) - A
| TLS_RSA_WITH_AES_256_CBC_SHA256 (rsa 2048) - A
| compressors:
| NULL
| cipher preference: server
|_ least strength: A
这里发生了什么?什么是适当的调查方法,更好地解决这个问题?