나나만의 인증 기관이 되어 보세요.다음 튜토리얼을 완료한 후: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 2
DB_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 xxx
xxx를 사용하고 xxx만 구성 파일로 사용하십시오. 파일이 업스트림에서 가져온 경우 원하는 부분 이름 usr_cert
은 이미 발견한 이름이지만 기본값이므로 usr_cert를 지정할 필요는 없습니다. email_in_dn에 대한 오류 메시지는 오류 스택에 남아 있는 유일한 실제 오류입니다. usr-crt
일단 수정한 후에는 필요하지 않지만 -noemailDN
여전히 필요할 수 있습니다.
이것이 subjectNameAlt와 관련이 있나요?
당신이 의미한다고 가정하면 unique_subject
, 아니오. subjectAltName
(아님 subjectNameAlt
) SAN이라고도 하는 것은 주제에 대한 대체 이름을 지정하는 일반 확장이지만 SAN은 포함하지 않고 unique_subject
기본 Subject
필드만 포함합니다.
프록시를 통해 인터넷에 액세스할 브라우저에 설치된 클라이언트 인증서
분명히 말하면, 이러한 클라이언트 인증서는 자신의 신원을 확인하는 데만 사용됩니다.대리인에게. 클라이언트/브라우저의 인증서를 사용하여 HTTPS MitM을 통해 인터넷의 무언가에 인증할 수 없으며, 인터넷에 있는 다른 사람의 시스템에 인증하기 위해 직접 발급한 클라이언트 인증서를 사용할 수 없습니다.