기본 CA 인증서 번들 위치


18

기본 CA 인증서 번들에 .pem 인증서 파일을 추가해야하지만 기본 CA 인증서 번들이 어디에 보관되어 있는지 알 수 없습니다.

이 기본 번들에 새 .pem 파일을 추가해야합니다. --capath를 사용하여 내 위치를 지정하는 것보다

cURL은 어디를 볼지 명확하게 알고 있지만 위치를 나타내는 cURL 명령은 표시되지 않습니다. 이 위치를 알려주는 명령이 있습니까? 어떻게 찾을 수 있습니까?

cURL에 따르면 :
서버의 CA 인증서를 기존 기본 CA 인증서 번들에 추가하십시오. 사용하는 CA 번들의 기본 경로는 --with-ca-bundle 옵션으로 선택한 경로를 지정하여 configure를 실행하여 변경할 수 있습니다.

감사


어떤 운영 체제를 사용하고 있습니까?
Cristian Ciupitu

답변:


20

curl와 함께 실행 strace하면 실마리를 얻을 수 있습니다.

strace curl https://www.google.com | & grep open

많은 결과물이 있지만 끝 부분에 가깝습니다.

open ( "/ etc / ssl / certs / 578d5c04.0", O_RDONLY) = 4

내 인증서가 저장되는 곳입니다.


2
나에 대해 알려주는 +1 strace!
Robert Dundon

stracemacOS에서는 사용할 수 없습니다. "동일" dtruss은 "dtrace : dtrace를 초기화하지 못했습니다 : DTrace에 추가 권한이 필요합니다"라고 말했습니다. 그래서 나는 그것을 사용 sudo했다. "dtrace : curl을 실행하지 못했습니다 : dtrace는 제한된 권한으로 서명 된 실행 파일을 제어 할 수 없습니다"라고 응답했습니다. 별로 도움이되지 않습니다.
LS

17

curl의 'bin /', 즉 'curl'이진이 상주하는 'curl-config'프로그램이 있어야합니다.

./curl-config --ca

ca 번들 설치 경로를 제공합니다.

방금 whatis curl-config : "libcurl 설치에 대한 정보 얻기"를 수행 했으므로 libcurl이 설치된 경우에만 사용할 수있을 것입니다.


1
이것을 실행하기 위해 우분투에 패키지를 설치해야했습니다 (설치되어 있지 않은 경우 사용 가능한 옵션 목록이 표시됩니다).이 명령을 사용하면 올바른 위치로 이동했습니다!
Robert Dundon

2
curl-config프로그램은 모든 버전의 프로그램 또는 설치에서 사용할 수 없습니다. 예를 들어 일부 관리자는 프로그램의 목적을 이해하지 못하고 빌드 구성 도구 일 뿐이므로 설치하지 않을 수 있습니다. 또한 프로그램이 필요한 사용자가 시스템 관리자가 아닌 경우 설치할 수 없습니다. 두 시스템에 액세스 할 수 있습니다. 하나는이 프로그램이 없으며 다른 하나는에 대한 출력 을 제공 하지 않습니다curl-config --ca .
LS

승인 된 답변 보다이 답변을 선호 strace합니다. 구성 정보를 찾는 데 필요하지 않아야합니다.
Ken Williams

7

나는 쉬운 방법을 발견하십시오 사용 --cacert로모그래퍼 잘못된 파일 이름, 출력 경로를 표시합니다.

예:

~$ curl --cacert non_existing_file https://www.google.com
curl: (77) error setting certificate verify locations:
  CAfile: non_existing_file
  CApath: /etc/ssl/certs

나는 이것이 좋은 해결책처럼 보였다고 생각했다. 그러나 curl은 "77"오류를 표시했지만 추가 정보는 제공하지 않았습니다.
LS

@LS는 verbose 플래그를 추가해보십시오 : -v 또는 --verbose
Chananel P

2

리눅스 (데비안 우분투)

/ dir / usr / local / share / ca-certificates /에 CA를 복사하십시오.

sudo cp foo.crt /usr/local/share/ca-certificates/foo.crt

CA 저장소 업데이트

sudo update-ca-certificates

CA를 제거하고 CA 저장소를 업데이트하십시오.

sudo update-ca-certificates --fresh

리눅스 (CentOs 6)

ca 인증서 패키지를 설치하십시오.

yum install ca-certificates

다음과 같이 동적 CA 구성 기능을 사용하십시오. update-ca-trust force-enable 다음을 새 파일로 추가하십시오 /etc/pki/ca-trust/source/anchors/.

cp foo.crt /etc/pki/ca-trust/source/anchors/
update-ca-trust extract

리눅스 (CentOs 5)

신뢰할 수있는 인증서를 파일에 추가 /etc/pki/tls/certs/ca-bundle.crt

cat foo.crt >>/etc/pki/tls/certs/ca-bundle.crt

https://manuals.gfi.com/en/kerio/connect/content/server-configuration/ssl-certificates/adding-trusted-root-certificates-to-the-server-1605.html 아주 좋은 링크, 몇 가지 인기있는 OS에 추가하는 방법.


이 이론적으로 질문에 대답 할 수 있습니다 동안, 바람직 할 것이다 여기에 대한 대답의 본질적인 부분을 포함하고 참조 할 수 있도록 링크를 제공합니다.
Gerald Schneider

@GeraldSchneider> 당신은 코멘트를 읽고
행동

1

curl을 만든 haxx.se 에서 CA Root Certificates 번들을 다운로드 할 수 있습니다. 그런 다음 .pem에 인증서를 추가하고 --cacert 옵션으로 curl을 사용할 때 참조하십시오.


1

-v URL에 https가 있습니다.

$ curl -v https://google.com
* Rebuilt URL to: https://google.com/
* timeout on name lookup is not supported
*   Trying 172.217.9.174...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0* Connected to google.com (172.217.9.174) port 443 (#0)
* ALPN, offering http/1.1
* Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
* successfully set certificate verify locations:
*   *CAfile: C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt*

아니. 그것은 나에게 그런 것을 보여주지 않았습니다. 사실, 나는 그 결과를 다른 런과 비교하여 -k차이가 있는지 여부를 확인 하는 옵션을 추가했습니다 . 차이는 없었습니다.
LS

@LS URL에 https가 있습니까?
Philip Rego

0

기본 CA 번들 위치는 OS에 따라 다릅니다. RHEL5에서는 /etc/pki/tls/certs/ca-bundle.pem에 있습니다. 다른 종류의 Linux 또는 Linux 이외의 OS에서는 다른 위치에있을 수 있습니다.


그래서 난 그냥 그 파일을 검색하는 것 같아요 ...
Slinky

2
또 다른 아이디어 : # strings /usr/lib64/libcurl.so.3 | egrep '^
/'/etc/pki/tls/certs/ca-bundle.crt
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.