简单的问题:每个可以使用 https 的程序(wget、curl 等)在 linux 上都可以完美运行,而在 hpux 上却很糟糕。使用https://google.com查看此示例
在 Linux 上
wget https://www.google.com/
--2018-12-04 16:47:27-- https://www.google.com/
Resolving www.google.com... 64.233.166.99, 64.233.166.106, 64.233.166.105, ...
Connecting to www.google.com|64.233.166.99|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: 'index.html'
index.html [ <=> ] 11.78K --.-KB/s in 0.01s
2018-12-04 16:47:27 (949 KB/s) - 'index.html' saved [12063]
我得到了文件
在 hp-ux 上
wget https://www.google.com/
--2018-12-04 16:48:46-- https://www.google.com/
Resolving www.google.com (www.google.com)... 64.233.166.99, 64.233.166.106, 64.233.166.105, ...
Connecting to www.google.com (www.google.com)|64.233.166.99|:443... connected.
ERROR: The certificate of 'www.google.com' is not trusted.
ERROR: The certificate of 'www.google.com' doesn't have a known issuer.
ERROR: The certificate of 'www.google.com' was signed using an insecure algorithm.
我得到..没有。
我运行命令
c_rehash
和
/usr/local/bin/c_reash
但什么都没有改变。
背景
在 Linux 上,默认情况下您可能拥有最新的受信任根证书集合,通常位于
/etc/ssl/certs/
目录或/etc/pki/tls/certs/ca-bundle.crt
文件中,具体取决于所使用的 Linux 发行版。在 HP-UX 上,等效目录可能是
/opt/openssl/certs/
或/usr/local/etc/ssl/certs
,具体取决于您使用的是 HPe 提供的 OpenSSL 版本还是第三方版本。我认为相当多的 Linux 发行版将使用一组受信任的根证书,这与 Mozilla Firefox 浏览器中的证书相同。
在 HP-UX 上,受信任的根证书的集合更有可能是陈旧的,因为默认的受信任的根证书集可能要小得多,并且操作系统不包含可以自动从某个中央 Internet 存储库提供更新的工具(因为 HP-UX 补丁访问需要支持协议),而且您可能还使用了 HP 未提供的 OpenSSL 版本。
该
c_rehash
命令不会自动为您更新证书:它仅在当前目录(或指定目录)中扫描单个文件中的 SSL 证书,并创建/更新相应的符号链接,命名为HHHHHHHH.D
whereHHHHHHHH
is a 8-digit hexadecimal hash of the certificate , D 是十进制数,通常为 0,但如果有多个具有相同哈希的证书,则递增。OpenSSL 使用这些链接比扫描目录中的所有文件或扫描文件中的所有连接证书更快地找到正确的根证书ca-bundle.crt
。如果你
c_rehash
在一个不包含任何证书的目录中运行,它什么都不会做。如果您在其中包含证书但不是 OpenSSL 配置为扫描受信任证书的目录中运行它,它创建的链接将不是很有用。修复
您将需要检查您正在使用的 TLS/SSL 服务的证书以识别适当的根证书,然后找到一种方法来获取该根证书的公共部分(例如,通过从任何 Web 浏览器的证书存储中导出它,或者通过使用已经具有一组良好根证书的网络浏览器从安全网页下载它)。例如,可以在此处找到 Google 的根证书。
获得必要的根证书后,您需要找出您的应用程序正在使用哪个版本的 OpenSSL(例如
ldd $(which wget) | grep ssl
)。常见的选择是 HP 提供的 OpenSSL,它通常存在于/opt
HP -UX Porting and Archive Center/usr/local
中,除非是真正古老的版本,否则它通常在下面。然后将证书放在适当的目录中,并
c_rehash
针对该特定目录运行。