Openssl

SSL 和 wget、curl 等程序在 hpux 上使用 https

  • March 29, 2019

簡單的問題:每個可以使用 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.Dwhere HHHHHHHHis 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 移植和存檔中心/usr/local的版本,除非是真正古老的版本,否則該版本通常位於其中。

然後將證書放在適當的目錄中,並c_rehash 針對該特定目錄執行。

引用自:https://unix.stackexchange.com/questions/485935