OpenSSL 0.9.8zc-> 0.9.8zd 인증서를“파산”했습니다.


1

OpenSSL 0.9.8zc를 사용하여 Mac에서 자체 서명 된 인증서 (및 CA)를 만들었습니다. 인증서를 사용하여 내 svn 서버에 대한 연결을 보호합니다. 최신 OS X 업데이트에서는 OpenSSL이 0.9.8zd로 업데이트되었습니다. 이제 서버에 연결할 수 없습니다. svn에서 "인증서 확인 실패"를 얻습니다.

openssl을 사용하여 확인 :

openssl verify -CAfile ~/Desktop/Certificates.pem -check_ss_sig  ~/Downloads/svn.pem

나는 얻다

~/Downloads/svn.pem: /CN=My Open Directory Certification Authority/O=Me/OU=MACOSX OpenDirectory Root CA/emailAddress=webmaster@me
error 7 at 2 depth lookup:certificate signature failure

내 CA의 서명이 이제 "손상된"것으로 간주됩니다. 내 질문 :

  1. 인증서에 대해 정확히 "파손 된"항목을 파악하기 위해 어떻게 더 조사 할 수 있으므로이 실수를 반복하지 않습니까?

  2. CA로 시작하는 모든 인증서의 재발급 문제를 해결하는 방법이 있습니까?

답변:


1

이것은 인증서 어시스턴트가 openssl 0.9.8zd 거부에 대한 새로운 엄격한 검사로 미묘하게 잘못된 인증서를 생성하는 데 문제가있는 것 같습니다. 이것은 openssl.org에서 토론에서 온다 1

그것은 성공적으로 사용하는 .pem 인증서를 수정하는 파이썬 스크립트를 마지막에 포함합니다. 링크가 끊어지면 인용하십시오 ...

from pyasn1.codec.der import decoder, encoder   
from pyasn1_modules import pem, rfc2459

cert_der = pem.readPemFromFile(open("RabbitMQ_Test.pem", "r"))
        cert, _ = decoder.decode(cert_der, asn1Spec=rfc2459.Certificate())

cert.setComponentByName("signatureAlgorithm",
                                cert.getComponentByName("tbsCertificate").
                                getComponentByName("signature"))

fixed_cert_pem = open("RabbitMQ_Test_Fixed.pem", "w")
fixed_cert_pem.write("-----BEGIN CERTIFICATE-----\n")
fixed_cert_pem.write(encoder.encode(cert).encode("base64"))
fixed_cert_pem.write("-----END CERTIFICATE-----\n")
fixed_cert_pem.close()

예, 수정 된 것 같습니다. 스크립트를 통해 인증서 체인 pem 파일과 svn 인증서를 모두 실행했으며 최종 openssl 확인 테스트가 오류없이 진행되었습니다. 따라서 OS X 유틸리티는 TBS와 서명에서 서명 알고리즘 이름이 일치하지 않는 인증서를 생성하는 것으로 보입니다. 이제 OS X Server OD가 올바른 인증서를 수락하도록 할 수 있는지 확인해야합니다.
Anton

0

OS X 10.10.3을 사용 중이고 방금 시작된 경우 :

NB : 일시적인 해결책입니다. 문제가 더 업스트림 인 것 같습니다.

OSX를 10.10.3으로 업그레이드 한 결과 갑자기이 오류가 발생하기 시작했습니다. 말했듯이 중단은 포함 된 새 버전의 OpenSSL (0.9.8zd)에 의한 것 같습니다.

이 경우 바닥에 닿을 때까지 해결 방법으로 homebrew의 OpenSSL 패키지를 사용했습니다.

$ brew update
$ brew install openssl
$ brew link openssl --force 

부실 인증서를 업데이트해야 할 수도 있습니다. rvm을 사용하면 실행중인 경우입니다.

$ rvm osx-ssl-certs update all

그러나 그 소리에 의해 당신은 무엇을하고 있는지 알고 있습니다

그것은 사제가 권장하는 주목할 가치 에 대해 당신은 아마 우리가 만든 난장판을 정리하려면이 옵션을 실행하는 것이 좋습니다 상류이 정리되면 있도록 OpenSSL에 연결 :

$ brew unlink openssl 

감사합니다. 그러나 OpenSSL을 다운 그레이드하고 싶지는 않습니다. 또한 이것이 업스트림으로 수정 될지 확실하지 않습니다. OpenSSL 변경에 대한 설명에서 인증서 유효성 검사를보다 엄격하게하는 수정 사항이 도입되었으며 이는 좋은 일입니다. 그리고 이러한 변경 사항은 다음 버전의 OpenSSL에 유지됩니다.
Anton

homebrew에 의해 설치된 openssl은 OpenSSL 1.0.2a 2015 년 3 월 19 일입니다. OS X에 의해 설치된 버전은 0.9.8zd입니다.
abradner

나는 당신이 업그레이드를 제안하고 있습니다. 나는 오해했다. 그러나 내 인증서는 여전히 "파손"되었습니까?
Anton

확실하지 않습니다. 실험 후 homebrew openssl을 연결 해제 및 / 또는 제거하면 시스템이 기존 상태로 돌아갑니다.
abradner

또한 루비와 같은 여러 앱이 내 문제의 근본 인 새로운 ssl ca 파일을 찾지 못합니다. 무언가를 시도해 볼 수 있습니까-스크립트를 실행하기 전에 다른 ca 파일을 지정할 수 있습니까? 예를 SSL_CERT_FILE=/Library/Caches/Homebrew/openssl--Equifax_CA-Secure.pem <command>들어이 예제에서는 homebrew openssl을 설치할 때 설치되는 pem 파일을 사용하고 있지만 유효한 capem을 사용할 수 있습니다.
abradner

0

클라이언트 및 서버 인증서를 사용하여 10.10.3에서 실행되는 Apache 서버에 연결하려고 할 때 비슷한 문제가 발생했습니다. 파이썬 스크립트는 Apache가 사용할 SSL 서버 인증서에서 작동했지만 Safari는 여전히 키 체인의 클라이언트 인증서를 사용하여 서버에 연결할 수 없습니다. Apache 서버가 클라이언트 인증서를 거부했습니다.

클라이언트 인증서를 내보내고 그 위에 python 스크립트를 사용한 다음 키 체인으로 다시 가져 와서 원본을 바꾸어야했습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.