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
Bash 如何强制OpenSSL使用旧密码_Bash_Ssl_Openssl_Macports - Fatal编程技术网

Bash 如何强制OpenSSL使用旧密码

Bash 如何强制OpenSSL使用旧密码,bash,ssl,openssl,macports,Bash,Ssl,Openssl,Macports,我试图使用这个shell脚本中的OpenSSL检查APC配电装置上的“安全”证书,但一直得到一个空响应 #!/bin/bash host=192.168.242.27 port=443 cert=$(openssl s_client -connect "$host":"$port" 2>/dev/null | sed -n '/BEGIN CERT/,/END CERT/p') echo "We got a cert:" echo $cert 所以我做了一些调试。我在Mac上,有一个Ma

我试图使用这个shell脚本中的OpenSSL检查APC配电装置上的“安全”证书,但一直得到一个空响应

#!/bin/bash
host=192.168.242.27
port=443
cert=$(openssl s_client -connect "$host":"$port" 2>/dev/null | sed -n '/BEGIN CERT/,/END CERT/p')
echo "We got a cert:"
echo $cert
所以我做了一些调试。我在Mac上,有一个MacPorts环境。使用MacPorts版本的OpenSSL连接到服务器,我什么也得不到:

❱ openssl version
OpenSSL 1.0.2h  3 May 2016

❱ openssl s_client -connect 192.168.242.27:443
CONNECTED(00000003)
140735258415184:error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure:s23_clnt.c:769:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 7 bytes and written 308 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
    Protocol  : TLSv1
    Cipher    : 0000
    Session-ID: 
    Session-ID-ctx: 
    Master-Key: 
    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    Start Time: 1464972048
    Timeout   : 300 (sec)
    Verify return code: 0 (ok)
---
但是,使用内置版本,我得到了一个响应:

❱ /usr/bin/openssl version
OpenSSL 0.9.8zh 14 Jan 2016

❱ /usr/bin/openssl s_client -connect 192.168.242.27:443
CONNECTED(00000003)
depth=0 /C=US/ST=Default State/L=Default Locality/O=American Power Conversion Corp/OU=Internally Generated Certificate/CN=5A1320E05051
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 /C=US/ST=Default State/L=Default Locality/O=American Power Conversion Corp/OU=Internally Generated Certificate/CN=5A1320E05051
verify error:num=21:unable to verify the first certificate
verify return:1
---
Certificate chain
 0 s:/C=US/ST=Default State/L=Default Locality/O=American Power Conversion Corp/OU=Internally Generated Certificate/CN=5A1320E05051
   i:/C=US/ST=Default State/L=Default Locality/O=American Power Conversion Corp/OU=Internally Generated Certificate/CN=5A1320E05051
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIC1DCCAl6gAwIBAgIIWotX81/0ywkwDQYJKoZIhvcNAQEFBQAwgasxCzAJBgNV
BAYTAlVTMRYwFAYDVQQIEw1EZWZhdWx0IFN0YXRlMRkwFwYDVQQHExBEZWZhdWx0
IExvY2FsaXR5MScwJQYDVQQKEx5BbWVyaWNhbiBQb3dlciBDb252ZXJzaW9uIENv
cnAxKTAnBgNVBAsTIEludGVybmFsbHkgR2VuZXJhdGVkIENlcnRpZmljYXRlMRUw
EwYDVQQDEww1QTEzMjBFMDUwNTEwHhcNMDEwOTEzMDk1NjU2WhcNMjIwOTEzMDk1
NjU2WjCBqzELMAkGA1UEBhMCVVMxFjAUBgNVBAgTDURlZmF1bHQgU3RhdGUxGTAX
BgNVBAcTEERlZmF1bHQgTG9jYWxpdHkxJzAlBgNVBAoTHkFtZXJpY2FuIFBvd2Vy
IENvbnZlcnNpb24gQ29ycDEpMCcGA1UECxMgSW50ZXJuYWxseSBHZW5lcmF0ZWQg
Q2VydGlmaWNhdGUxFTATBgNVBAMTDDVBMTMyMEUwNTA1MTB8MA0GCSqGSIb3DQEB
AQUAA2sAMGgCYQDch9OnR65LipagZvVj5VACX2UIzjtq/4/EjRID34r7+GABci2P
Gw1+UOKG1fc/AeUQdOrYKwpC4qzMmGij/H1mhEbvdc3FYtq4l8/f/Ou+mLW32SfJ
d/yMuL0gtq98oRsCAwEAAaNEMEIwEQYKKwYBBAGXVQMBBQQDAwEAMB0GA1UdDgQW
BBQUcKO5XStaWDQVNrzCuYli5ezggTAOBgNVHQ8BAf8EBAMCBaAwDQYJKoZIhvcN
AQEFBQADYQB7XFmN6oBMT7sCRyHqoujjb/yCRvol19YBcIvzuMJiPOtzLrDOOqBc
QrROWPKq1RwPQnLzQ9bnbJ7dcMukrpmLrAA4T9SK0en+puTGtMqEsxFdX7mZr0ZG
wRCP+fFjCGU=
-----END CERTIFICATE-----
subject=/C=US/ST=Default State/L=Default Locality/O=American Power Conversion Corp/OU=Internally Generated Certificate/CN=5A1320E05051
issuer=/C=US/ST=Default State/L=Default Locality/O=American Power Conversion Corp/OU=Internally Generated Certificate/CN=5A1320E05051
---
No client certificate CA names sent
---
SSL handshake has read 848 bytes and written 280 bytes
---
New, TLSv1/SSLv3, Cipher is RC4-MD5
Server public key is 768 bit
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : TLSv1
    Cipher    : RC4-MD5
    Session-ID: E07867E677700F3E7F69FFCC96B4A158
    Session-ID-ctx: 
    Master-Key: 16CB13EF51575C010EB50D37C353A276C108B6673D5FEFEA7B196F84C7ECD858AC00A3137C5AAB9758C50ED35B92BC8B
    Key-Arg   : None
    Start Time: 1464972023
    Timeout   : 300 (sec)
    Verify return code: 21 (unable to verify the first certificate)
---
(是的,这是一个2年历史的硬件上的RC4-MD5密码;不,我不建议任何人购买这些东西。)


在生产中,我希望能够在Linux服务器上实现这一点,在该服务器上我只能访问OpenSSL 1.0.2。我尝试过使用各种参数
openssl s_client
禁用和启用SSL和TLS的各种组合,但没有成功。那么,有没有一种方法可以让现代版本的OpenSSL与加密较弱的设备通信呢?

它正在编程,因为您可能需要从源代码构建自己的设备

见此:

  • 在OpenSSL的默认版本中禁用SSLv3及以上版本中的弱密码。 未配置“启用弱ssl密码”的生成将不会 提供任何“导出”或“低”强度密码。 [维克多·杜霍夫尼]

  • 禁用SSLv2默认构建、默认协商和弱密码。 SSLv2 默认情况下,在生成时禁用。未使用配置的生成 “enable-ssl2”将不支持SSLv2


我知道这可能被认为是离题的,但我是作为bashshell脚本的一部分来做这件事的;所以编程,对吗?堆栈溢出是一个关于编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参见帮助中心中的。也许或者会是一个更好的提问的地方。另请参见.Related,您有一个格式不正确的自签名证书:
/C=US/ST=Default State/L=Default Locality/O=American Power Conversion Corp/OU=internal-Generated certificate/CN=5A1320E05051
。没有使用
192.168.242.27
作为主机名的
Subject备用名称
(使用类似于
pbpaste | openssl x509-text-noout的内容
)。几乎每个用户代理都会拒绝它。OpenSSL不会拒绝它,因为OpenSSL 1.0.2和更早版本没有执行主机名匹配。OpenSSL 1.1.0将执行主机名匹配,因此请准备好接下来的所有devops问题。@jww是的,这是设备附带的默认问题;我正在尝试提取所有证书,以便知道哪些证书需要替换为我们CA中的证书。事实上,这些证书的管理仅限于SSH,因为浏览器不再接受768位密钥。现在他们也都需要固件更新,所以他们可以处理1024位的密钥和一个额外的密码。2016年销售的设备的安全性非常差。要回答您当前的问题,您可以使用类似于
openssl s_客户端-connect 192.168.242.27:443-ssl3-cipher'AES-SHA'
的旧协议和密码。如果您在SNI中使用TLS 1.0及以上版本,则
openssl s_客户端-connect 192.168.242.27:443-tls1-servername-cipher'HIGH:!阿努尔:!RC4:!MD5'
。还有,谢谢。为了记录在案,也没有计划这样做。