자체 인증 기관이 된 후 클라이언트 인증서를 생성할 수 없습니다.

자체 인증 기관이 된 후 클라이언트 인증서를 생성할 수 없습니다.

나만의 인증 기관이 되어 보세요.다음 튜토리얼을 완료한 후:https://jamielinux.com/docs/openssl-certificate-authority/

루트 쌍을 만들고, 중간 쌍을 만들고, 다음과 같이 Squid에 설치한 서버 인증서에 서명했습니다.

http_port 3129 ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=4MB cert=/etc/squid3/certs/gatesentry.csr.cert.pem key=/etc/squid3/key/gatesentry.key.pem

존재하다squid3.conf

오징어는 이것으로 시작합니다. 실제로 작동하는지 아직 확실하지 않습니다.

프록시를 통해 인터넷에 액세스하는 브라우저에 설치하기 위해 클라이언트 인증서를 생성하려고 하면 다음 오류가 발생합니다.

나는 다음을 기반으로 생성합니다."인증서 만들기"라는 "서버 및 클라이언트 인증서 서명" 섹션

인증을 위해 클라이언트 인증서를 생성하려면 "usr_crt" 확장을 사용해야 한다고 나와 있으므로 다음을 실행합니다.

cd /root/ca
openssl ca -config intermediate/openssl.conf \
      -extensions usr_cert -days 375 -notext -md sha256 \
      -in intermediate/csr/gatesentry.csr.pem \
      -out intermediate/certs/client.cert.pem
Using configuration from intermediate/openssl.conf
Enter pass phrase for /root/ca/intermediate/private/intermediate.key.pem:
Check that the request matches the signature
Signature ok
Certificate Details:
        Serial Number: 4097 (0x1001)
        Validity
            Not Before: Jun 22 10:36:44 2016 GMT
            Not After : Jul  2 10:36:44 2017 GMT
        Subject:
            countryName               = US
            stateOrProvinceName       = Pennsylvania
            localityName              = locality
            organizationName          = Parents
            organizationalUnitName    = Security
            commonName                = gatesentry.domain.lan
            emailAddress              = [email protected]
        X509v3 extensions:
            X509v3 Basic Constraints: 
                CA:FALSE
            Netscape Cert Type: 
                SSL Client, S/MIME
            Netscape Comment: 
                OpenSSL Generated Client Certificate
            X509v3 Subject Key Identifier: 
                XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX
            X509v3 Authority Key Identifier: 
                keyid:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX

            X509v3 Key Usage: critical
                Digital Signature, Non Repudiation, Key Encipherment
            X509v3 Extended Key Usage: 
                TLS Web Client Authentication, E-mail Protection
Certificate is to be certified until Jul  2 10:36:44 2017 GMT (375 days)
Sign the certificate? [y/n]: y
failed to update database
TXT_DB error number 2

루트로 명령을 실행할 때(물론 다른 컴퓨터에서) TXT_DB 오류 번호 2 메시지가 나타나는 이유를 이해할 수 없습니다.

튜토리얼에 따르면 이 과정에서 일반 이름을 변경할 수 있어야 합니다.

답변1

TXT_DB error number 2DB_ERROR_INDEX_CLASH를 나타냅니다.

동일한 인덱스를 가진 인증서를 OpenSSL CA 데이터베이스에 두 번 제출하려고 시도했습니다.

이는 일반적으로 동일한 일련 번호 또는 동일한 일반 이름을 포함하는 데이터베이스에 제출된 인증서로 인해 발생합니다. 후자의 경우 파일 unique_subject에서 해당 옵션을 확인하세요 . intermediate/openssl.conf에서 읽을 수 있습니다 .man ca

클라이언트 인증서의 일반 이름은 사용자 이름 등 무엇이든 될 수 있습니다.

일반 이름은 파일에 지정됩니다 intermediate/openssl.conf. 값을 묻는 메시지를 표시하거나 구성 파일에서 값을 읽도록 구성할 수 있습니다. 이는 prompt에서 읽을 수 있는 옵션에 의해 제어 됩니다 man req.

답변2

튜토리얼에 따르면 이 과정에서 일반 이름을 변경할 수 있어야 합니다.

튜토리얼에서는 새 키 생성, openssl genrsa새 CSR 사용 openssl req -new및 CSR을 사용하여 인증서 생성을 사용하는 방법을 알려줍니다 openssl ca. (많은 사람들처럼 인증서가 "CSR 서명"에 의해 생성되었다고 잘못 명시되어 있지만 CA는 CSR에 서명하지 않습니다. CA는 인증서에 서명합니다.부분적으로 기반CSR이지만 CSR과 동일하지는 않습니다. /노호)

새 CSR을 생성하는 경우일반 이름을 포함하되 이에 국한되지 않는 주체 이름을 지정합니다. 이 이름은 위에서 언급한 CA 인증서와 달라야 합니다.~해야 한다혼동을 피하기 위해 다른 EE 인증서와 다릅니다.

openssl ca실제로 발급된 인증서의 주체 이름(일반 이름만 사용하는 것이 아니라 전체 이름)을 재정의할 수 있지만 이렇게 하면 동일한 키에 대한 인증서가 서로 다른 이름을 가지게 되어 불필요하게 혼란스럽고 일반적으로 보안 수준이 떨어집니다. (당신은) 그 부분을 신경쓰지 않지만, 다른 사람들도 신경쓰고 있어서 쉽지 않습니다.)

usr-crt 섹션에서 확장 프로그램을 로드하는 중 오류가 발생했습니다
... 값이 없습니다... name=email_in_dn
업스트림 기본 파일에서 온 것일 수 있습니다...

간접적. openssl ca -config xxxxxx를 사용하고 xxx만 구성 파일로 사용하십시오. 파일이 업스트림에서 가져온 경우 원하는 부분 이름 usr_cert은 이미 발견한 이름이지만 기본값이므로 usr_cert를 지정할 필요는 없습니다. email_in_dn에 대한 오류 메시지는 오류 스택에 남아 있는 유일한 실제 오류입니다. usr-crt일단 수정한 후에는 필요하지 않지만 -noemailDN여전히 필요할 수 있습니다.

이것이 subjectNameAlt와 관련이 있나요?

당신이 의미한다고 가정하면 unique_subject, 아니오. subjectAltName(아님 subjectNameAlt) SAN이라고도 하는 것은 주제에 대한 대체 이름을 지정하는 일반 확장이지만 SAN은 포함하지 않고 unique_subject기본 Subject필드만 포함합니다.

프록시를 통해 인터넷에 액세스할 브라우저에 설치된 클라이언트 인증서

분명히 말하면, 이러한 클라이언트 인증서는 자신의 신원을 확인하는 데만 사용됩니다.대리인에게. 클라이언트/브라우저의 인증서를 사용하여 HTTPS MitM을 통해 인터넷의 무언가에 인증할 수 없으며, 인터넷에 있는 다른 사람의 시스템에 인증하기 위해 직접 발급한 클라이언트 인증서를 사용할 수 없습니다.

관련 정보