wget 또는 다른 명령을 사용하여 https://www.google.com 에서 ssl 인증서를 다운로드하고 싶습니다 . 유닉스 커맨드 라인? wget 또는 openssl?
wget 또는 다른 명령을 사용하여 https://www.google.com 에서 ssl 인증서를 다운로드하고 싶습니다 . 유닉스 커맨드 라인? wget 또는 openssl?
답변:
인증서를 다운로드하려면 openssl에 내장 된 클라이언트를 다음과 같이 사용해야합니다.
echo -n | openssl s_client -connect HOST:PORTNUMBER \
| sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > /tmp/$SERVERNAME.cert
그러면 인증서가에 저장됩니다 /tmp/$SERVERNAME.cert
.
-showcerts
체인의 모든 인증서를 다운로드하려는 경우 사용할 수 있습니다 . 그러나 서버 인증서 만 다운로드하려면 지정할 필요가 없습니다.-showcerts
echo -n
연결이 해제되도록 서버에 대한 응답을 제공합니다.
sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p'
인증서 체인 및 연결 세부 정보에 대한 정보를 제거합니다. 인증서를 다른 키 저장소로 가져 오는 데 선호되는 형식입니다.
-showcerts
너무 서버 / 잎 인증서를 보여? 스위치가 포함되었을 때 중간체 만 표시한다고 생각했습니다.
s_client
항상 서버 인증서를 표시합니다 (있는 경우 서버가 hello에 응답하고 익명 제품군을 선택하지 않음). -showcerts
표시 모든 인증서 표시는 먼저 중간체 및 / 또는 루트 인증서, 서버를 받았다.
답을 찾았습니다. Openssl이 제공합니다.
openssl s_client -connect $ {REMHOST} : $ {REMPORT}
openssl x509 -text <<EOF cert-text EOF
인증서의 세부 사항을 볼
sudo rm -f cert.pem && sudo echo -n | openssl s_client -connect localhost:443 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ./cert.pem
의 호의 serverfault.com/questions/139728/...
GNUTLS의 클라이언트 도구는 gnutls-cli
,이 쉽게 할 수 있습니다 :
gnutls-cli --print-cert www.example.com \
< /dev/null \
> www.example.com.certs
이 프로그램은 사이트에 대화식 클라이언트를 제공하도록 설계되었으므로 /dev/null
대화식 세션을 종료하려면 빈 입력 (이 예에서는 from )을 제공해야합니다 .
@bignose 답변을 기반으로 다음은 요리사 요리법에 잘 맞는 자체 포함 된 버전입니다.
sudo apt-get install gnutls-bin
gnutls-cli --print-cert myserver.com </dev/null| sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > myserver.crt
sudo cp myserver.crt /usr/local/share/ca-certificates/myserver.crt
sudo update-ca-certificates
true | openssl s_client -connect google.com:443 2>/dev/null | openssl x509
이 openssl 모드는 stdin을 필요로하므로이를 통해 제공합니다 true |
. 이는 -connect 매개 변수에 지정된 서버에 연결됩니다. 2>/dev/null
오류를 막습니다 (선택 사항) /dev/stdin
. 셸 파이프를 입력 파일로 사용하도록 지정하여 전체 출력을 x509 파서에 전달할 수 있습니다 . 그리고 그것은 출력의 -----BEGIN CERTIFICATE-----
to -----END CERTIFICATE-----
부분 만을 출력 할 것 s_client
입니다. > google.com.pem
명령 끝에 추가 하여 파일로 리디렉션 할 수 있습니다 .
내가 알 수 있듯이 인증서 체인을 확인하지는 않으며 최종 서버가 제공하는 SSL ID 만 알려줄 수 있습니다.
x509
기본적으로 stdin을 읽으므로 -in /dev/stdin
중복됩니다 (3) s_client
서버 인증서가 로컬 신뢰 앵커 (루트)에 올바르게 연결되어 있고 만료되지 않았 는지 확인합니다. (4) 해지 확인하지 않음 (5) 1.0.2에서만 서버 인증서 의 이름 을 확인 한 다음 기본적으로는 확인하지 않습니다 (그러나 인증서를 보면 쉽게 확인할 수 있습니다) 이후)