У меня возникла проблема на моем компьютере с CentOS 7 при выполнении любых действий, требующих SSL, включая curl, wget или обновление через YUM.
Результат всегда один и тот же:
[root@localhost ~]# curl -I -v https://google.com
* About to connect() to google.com port 443 (#0)
* Trying 74.125.138.100...
* Connected to google.com (74.125.138.100) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
* CAfile: /etc/pki/tls/certs/ca-bundle.crt
CApath: none
* Server certificate:
* subject: CN=*.google.com,O=Google Inc,L=Mountain View,ST=California,C=US
* start date: Jun 16 08:37:32 2016 GMT
* expire date: Sep 08 08:29:00 2016 GMT
* common name: *.google.com
* issuer: CN=192.168.2.44,C=US
* NSS error -8172 (SEC_ERROR_UNTRUSTED_ISSUER)
* Peer's certificate issuer has been marked as not trusted by the user.
* Closing connection 0
curl: (60) Peer's certificate issuer has been marked as not trusted by the user.
More details here: http://curl.haxx.se/docs/sslcerts.html
Все сертификаты, похоже, "отмечены как ненадежные" (я пробовал это с десятком разных URL). Я пробовал переустановить сертификаты CA, делая это:
yum --disablerepo="epel" reinstall ca-certificates
но это не помогло. Есть идеи?
решение1
Я бы проверил вашу установку nss. Возможно, она устарела или повреждена каким-то образом.
Проверьте версию, которую вы используете; последняя версия на CentOS 7 должна быть:
nss-config version
3.21.0
Затем проверьте, были ли изменены/повреждены какие-либо пакеты nss:
rpm -Vv nss-*
В зависимости от результатов может потребоваться обновление или переустановка nss.
Вы можете приблизительно определить, связана ли проблема с nss, временно изменив права доступа к этому каталогу (как пользователь root):
chmod 400 /etc/pki/nssdb/*
Затем выполните команду curl как обычный пользователь — если она сработает, то выведет что-то вроде этого:
* Connected to google.com (172.217.4.206) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
* Unable to initialize NSS database
* Initializing NSS with certpath: none
* CAfile: /etc/pki/tls/certs/ca-bundle.crt
CApath: none
* SSL connection using TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
* Server certificate:
<clipped>
Это означает, что он использовал только сертификаты CA, а не аутентификацию на основе nssdb.
Если это не проблема, связанная с nss, вотРуководство по RHELэто применимо и к CentOS, который проходит через обеспечение чистой конфигурации сертификата CA. Я не верю, что эта ссылка находится за их платным доступом; дайте мне знать, если она вам нужна и вы не можете получить к ней доступ.
решение2
В какой среде вы используете CentOS7?
Есть неприятная ошибка, связанная сCentos 6.8обновление / NSS 3.21.0-8.el6 на системах с виртуализацией (Zen) и/или поддержкой CPU AES. Я столкнулся с этой проблемой после обновления CentOS 6.8 и NSS на экземплярах Rackspace и AWS t1.micro.
Я полагаю, что у вас возникла проблема, связанная с обновлением Centos7 NSS.
https://www.centos.org/forums/viewtopic.php?t=58002
https://bugs.centos.org/view.php?id=10930#c26705
Как проверить, поддерживается ли AES-NI моим процессором? https://unix.stackexchange.com/questions/14077/how-to-check-that-aes-ni-is-supported-by-my-cpu
На 6.8, Некоторые люди преуспели впонижение версии NSS путем установки переменной среды: "NSS_DISABLE_HW_GCM=1"
# NSS_DISABLE_HW_AES=1
# yum downgrade nss nss-util nss-tools nss-sysinit
# yum install yum-plugin-versionlock
# yum versionlock add! nss-3.21.0-0.3.el6_7.x86_64 nss-sysinit-3.21.0-0.3.el6_7.x86_64 nss-tools-3.21.0-0.3.el6_7.x86_64 nss-util-3.21.0-0.3.el6_7.x86_64
Опять же, приведенный выше код предназначен для 6.8, а не для CentOS 7.
Я нашел nss-3.21.0-0.3.el6_7.x86_64 устарел и недоступен. Я перезагрузил весь сервер из резервной копии образа до обновления 6.8 и заблокировал версию YUM nss nss-sysinit nss-tools nss-util перед повторным обновлением.
ПРИМЕЧАНИЕ: Я бы добавил вышеуказанную информацию как «комментарий», а НЕ как «ответ», но мой низкий рейтинг репутации не позволяет мне комментировать, я могу только «ответить».
Надеюсь, это поможет.
решение3
У меня была похожая проблема. Конечно, это скорее всего мой собственный косяк.
Необходимо было установить*nss-*
[not showing this]# nss-config version
bash: nss-config: command not found
yum install -y nss-*
Installed:
nss-devel.x86_64 0:3.36.0-7.el7_5
nss-pam-ldapd.x86_64 0:0.8.13-16.el7
nss-pkcs11-devel.x86_64 0:3.36.0-7.el7_5
nss-softokn-devel.x86_64 0:3.36.0-5.el7_5
nss-softokn-freebl-devel.x86_64 0:3.36.0-5.el7_5
nss-util-devel.x86_64 0:3.36.0-1.el7_5
Dependency Installed:
nscd.x86_64 0:2.17-260.el7 nspr-devel.x86_64 0:4.19.0-1.el7_5
nss-config version
Usage: nss-config [OPTIONS] [LIBRARIES]
Options:
[--prefix[=DIR]]
[--exec-prefix[=DIR]]
[--includedir[=DIR]]
[--libdir[=DIR]]
[--version]
[--libs]
[--cflags]
Dynamic Libraries:
nss
nssutil
ssl
smime
[not showing this still]# nss-config --version
3.36.0