И так, нам нужен собственно сам сертификат в формате PEM, который нужно положить в правильное место:
– Linux: /usr/share/ca-certificates/mozilla
– FreeBSD: /usr/share/certs/trusted
– Oracle Solaris /etc/certs/CA
Теперь нужно сгенерировать симлинк с именем хеша в папку с сертификатами. Тут есть 2 варианта: использовать утилиту c_rehash (доступна в пакете openssl-perl) или сделать это вручную. Если не хотите ничего сломать и нужно сделать для одного сертификата, то лучше вручную. Делается так:
1) переходим в папку с сертификатами
– Linux/BSD – /etc/ssl/certs
– Oracle Solaris – /etc/openssl/cert
2) делаем симлинк:
ln -s "/path/to/cert_name.pem" "$(openssl x509 -hash -noout -in "cert_name.pem")".0
А если нужно сразу несколько, то так:
for file in *.pem; do ln -s "$file" "$(openssl x509 -hash -noout -in "$file")".0; done
Или через c_rehash.
Вот тут стоит сделать отступление. Как я ни пытался нормально сделать это через эту утилиту, она не могла нормально сделать симлинки: она делает их только в пределах той папки, где физически находятся сами сертификаты, то есть симлинк выходит вида hash -> file, а должен быть hash -> ../../openssl/CA/file. Поэтому, я решил делать через for
А если нужно быстро выполнить curl-запрос без изменения, то делается это любым из способов:
curl --cacert /etc/certs/ca-certificates.crt URL CURL_CA_BUNDLE=/etc/certs/ca-certificates.crt curl URL
где /etc/certs/ca-certificates.crt – список корневых сертификатов