RedHat에서 cURL CA 번들을 업데이트하는 방법은 무엇입니까?


38

내 cURL 버전과 함께 번들로 제공되는 CA 번들이 오래된 문제가 발생했습니다.

curl: (60) SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
More details here: http://curl.haxx.se/docs/sslcerts.html

내가해야 할 일이나 수행 방법을 이해하지 못했기 때문에 설명서를 읽는 것이 도움이되지 않았습니다. RedHat을 실행 중이며 CA 번들을 업데이트해야합니다. RedHat에서 내 CA 번들을 업데이트하려면 어떻게해야합니까?

답변:


50

나중에 RHEL 6의 경우 , 당신은 사용해야 갱신-CA 신뢰를 lzap 아래 그의 대답에 대해 설명대로.

--- Fedora, CentOS, Redhat의 이전 버전 :

Curl은 시스템 기본 CA 번들을 사용하고 있으며 /etc/pki/tls/certs/ca-bundle.crt에 저장되어 있습니다. 변경하기 전에 필요한 경우 시스템 기본값을 복원 할 수 있도록 해당 파일의 사본을 만드십시오. 새 CA 인증서를 해당 파일에 추가하거나 전체 번들을 교체 할 수 있습니다.

인증서를 어디서 구할 수 있는지 궁금하십니까? 나는 (그리고 다른 사람들은) curl.haxx.se/ca를 추천한다. 한 줄로 :

curl https://curl.haxx.se/ca/cacert.pem -o /etc/pki/tls/certs/ca-bundle.crt

Fedora Core 2 위치는 /usr/share/ssl/certs/ca-bundle.crt입니다.


좋습니다. 그러나 다음 번 ca-bundle.crt 업데이트에서 추가 한 인증서가 손실되지 않도록하려면 어떻게해야합니까? 새 장소를 자동으로 포함 할 수있는 장소가 있습니까?
Andrew Schulman

2006 년 현재 openssl 업그레이드는 ca-bundle.crt 파일을 대체하지 않아야합니다 ( rhn.redhat.com/errata/RHSA-2006-0661.html 참조 ). 그러나 @mgorven에서 권장하는 ca-certificates 패키지와 같은 다른 패키지가 설치되어 있으면 수동으로 덮어 쓸 것으로 예상됩니다.
Nada

36

RHEL 6+ 시스템에서 권장되는 방법 은 현재 기본적으로 설치되는 update-ca-trust 도구를 사용하는 것입니다.

# cat /etc/pki/ca-trust/source/README 
This directory /etc/pki/ca-trust/source/ contains CA certificates and 
trust settings in the PEM file format. The trust settings found here will be
interpreted with a high priority - higher than the ones found in 
/usr/share/pki/ca-trust-source/.

=============================================================================
QUICK HELP: To add a certificate in the simple PEM or DER file formats to the
            list of CAs trusted on the system:

            Copy it to the
                    /etc/pki/ca-trust/source/anchors/
            subdirectory, and run the
                    update-ca-trust
            command.

            If your certificate is in the extended BEGIN TRUSTED file format,
            then place it into the main source/ directory instead.
=============================================================================

Please refer to the update-ca-trust(8) manual page for additional information

따라서 crt 파일을에 /etc/pki/ca-trust/source/anchors/놓고 도구를 실행 하기 만하면됩니다 . 작업 완료. 이것은 안전합니다. 백업을 수행 할 필요가 없습니다. 전체 매뉴얼 페이지는 여기에서 찾을 수 있습니다 : https://www.mankier.com/8/update-ca-trust


안녕하세요, 당신을 위해 작동합니까? 나는 방금 access.redhat.com/solutions/1549003 에서 시나리오를 따르려고했지만 나에게 효과가 없습니다.
Kirby

6

RHEL은 ca-certificates패키지의 일부로 Mozilla CA 인증서를 제공합니다 ( yum아직 설치하지 않은 경우 설치). cURL에이를 사용하도록하려면 --cacert매개 변수를 사용하십시오 .

curl --cacert /etc/ssl/certs/ca-bundle.crt https://google.com/

나는 노력 yum install ca-certificates하고 있어요No package ca-certificates available
앤드류

1
RHEL6에는이 패키지가 있습니다. 이전 버전을 사용하고 있다고 생각합니다. 유감스럽게도 2010 년 이후 목록이 변경되지 않았습니다. 최신 정보를 제공해 주셔서 감사합니다.
Dan Pritts

AWS EC2에서 RHEL7을 사용하고 있습니다. 패키지를 업그레이드 ca-certificates.noarch 0:2014.1.98-70.0.el7_0했습니다. 불행히도 문제를 해결하지는 못했지만이 정보를 추가 할 것이라고 생각했습니다.
DuffJ

6

Redhat 버전에 따라 다릅니다. 다음을 수행하여 파일을 실제로 업데이트하는 패키지를 찾을 수 있습니다.

rpm -qf /etc/pki/tls/certs/ca-bundle.crt

내 결과 openssl-0.9.8e-12.el5 를 업데이트해야 한다는 것을 보여주었습니다 .

배포판에 업데이트 된 인증서가 없으면 Nada의 답변에 따라 수동으로 업데이트해야합니다.


6

Dan Pritts의 의견 이후 Red Hat은 지원되는 RHEL 릴리즈에 대한 인증서 번들을 더 자주 업데이트하고 있습니다. 패키지 변경 로그에서 이것을 쉽게 볼 수 있습니다. RHEL 6의 인증서는 2013 년에 두 번, 2014 년에 두 번 업데이트되었습니다.

모든 RHEL 및 관련 / 복제 / 파생 배포판은에 번들 파일을 제공 /etc/pki/tls/certs/ca-bundle.crt하고에 동일한 파일이 있습니다 /etc/pki/tls/cert.pem(이전 배포판의 cert.pem경우 심볼릭 링크입니다 ca-bundle.crt. 최신 배포판의 파일 형식은 심볼릭 링크입니다 update-ca-trust).

RHEL 6 이상에서 번들은 'ca-certificates'패키지의 일부입니다. RHEL 5 이하에서는 'openssl'패키지의 일부입니다.

업데이트 https://rhn.redhat.com/errata/RHEA-2013-1596.html 및 최신 RHEL 이 포함 된 RHEL 6 에서 '공유 시스템 인증서'시스템을 사용할 수 있으며 ( update-ca-trust enable활성화 하려면 실행해야 함) 방법은 lzap에서 제공 한 방법입니다. 이 시스템의 장점은 OpenSSL 기반 응용 프로그램뿐만 아니라 NSS 및 GnuTLS 기반 응용 프로그램에서도 작동한다는 것입니다. 디렉토리에 인증서를 배치하여 인증서를 신뢰할 수 없음에 유의하십시오 /etc/pki/ca-trust/source/blacklist/.

RHEL 5 이상 (및 새 시스템을 사용하지 않으려는 경우 RHEL 6) 에서는 / etc / pki / tls / certs에 확장자가.pem 있는 PEM 형식의 인증서 파일 배치하고 실행하여 추가 CA를 신뢰할 c_rehash수 있습니다 (필요할 수도 있음). yum install /usr/bin/c_rehash). 이것은 OpenSSL의 기본 신뢰 저장소를 사용하는 소프트웨어에서만 작동합니다. 번들 파일에 대한 공식 업데이트를 계속받을 수 있으므로 번들 파일을 편집하거나 바꾸는 것보다 낫습니다.

OpenSSL에 시스템 기본 신뢰 저장소를 사용하도록 요청하지 않고 번들 파일 위치 중 하나를 직접 사용하는 소프트웨어는 변경 사항을 존중하지 않습니다. 이러한 소프트웨어가있는 경우 번들 파일 편집 (또는 소프트웨어 개선)이 중단됩니다. OpenSSL을 전혀 사용하지 않는 소프트웨어는 추가 된 인증서를 존중하지 않습니다.


3

나는 단지 오래된 RHEL5 박스에서 이것을해야했다. 캐치 22에 도달했습니다 ... curl은 컴퓨터의 인증서가 너무 오래되어 curl.haxx.se 인증서를 검증하지 못했기 때문에 https 다운로드를 거부합니다.

https의 강제 다운로드를 위해 curl의 --insecure 옵션을 사용했습니다. (예, 알고 있습니다 ... "안전하지 않은"것입니다.)

https://curl.haxx.se/ca/cacert.pem --insecure -o /etc/pki/tls/certs/ca-bundle.crt


1

들어 RHEL 6 , 나는 업데이트 및 Red Hat에서 최신 CA 인증서에서 패키지를 다시 설치하여이 문제를 해결할 수 있었다 :

sudo yum update ca-certificates
sudo yum reinstall ca-certificates

(필자의 경우, 최신 "Let 's Encrypt Authority X3"서명 인증서를 신뢰하기에 충분했습니다.)


이 명령은 나를 위해 작동했지만 (CentOS 6) 내 문제를 해결하지 못했습니다 ( "DigiCert SHA2 보안 서버 CA"에서 발급 한 인증서 사용)
rinogo
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.