ястал моим собственным центром сертификациипосле прохождения руководства по адресу: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
Squid запускается просто отлично с этим. Все еще не уверен, работает ли он на самом деле или нет.
Когда я пытаюсь сгенерировать клиентский сертификат для установки в браузере, который будет выходить в Интернет через прокси-сервер, я получаю ошибку:
Я создаю его на основеРаздел «Подписание сертификатов сервера и клиента», в котором говорится «Создание сертификата»
Там говорится, что если я собираюсь создать клиентский сертификат для аутентификации, мне нужно будет использовать расширение «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, когда я запускаю команду как пользователь root (на другой машине, конечно).
Согласно руководству, я должен иметь возможность изменить общее имя в ходе этого процесса.
решение1
TXT_DB error number 2
означает DB_ERROR_INDEX_CLASH.
Вы дважды попытались отправить сертификат в базу данных центра сертификации OpenSSL с одним и тем же индексом.
Причиной этого обычно является отправка сертификата в базу данных, которая содержит тот же серийный номер или то же общее имя. Для последнего проверьте опцию unique_subject
в intermediate/openssl.conf
файле, о которой вы можете прочитать в man ca
.
Общим именем клиентского сертификата может быть что угодно, например, ваше имя.
Common Name будет указано в intermediate/openssl.conf
файле. Его можно настроить либо на запрос значений, либо на чтение значений из файла конфигурации. Это контролируется опцией prompt
, о которой вы можете прочитать в man req
.
решение2
Согласно руководству, я должен иметь возможность изменить общее имя во время этого процесса.
В этом руководстве говорится, что нужно сгенерировать новый ключ с помощью openssl genrsa
И новый CSR с помощью openssl req -new
И создать сертификат из CSR с помощью openssl ca
. (Хотя, как и у многих людей, здесь ошибочно говорится, что сертификат создается путем «подписания CSR». CA не подписывает CSR. CA подписывает сертификат, который создаетчастично основано наКСО, но отличается от КСО. /Готовность)
Когда вы создаете новый CSRвы указываете имя субъекта, включая, помимо прочего, общее имя, которое, как указано, должно отличаться от сертификатов CA, указанных выше, идолженотличаться от других сертификатов EE во избежание путаницы.
openssl ca
на самом деле можно переопределить имя субъекта для выданного сертификата (полное имя, а не отдельное общее имя), но это приведет к сертификатам с разными именами для одного и того же ключа, что в лучшем случае излишне запутывает и, как правило, менее безопасно (хотя вас эта часть не волнует, а вот других волнует, так что это не упрощает задачу).
Ошибка загрузки расширения в разделе usr-crt
... нет значения ... name=email_in_dn
Возможно, это происходит из вышестоящего файла настроек по умолчанию ...
Не напрямую. openssl ca -config xxx
использует xxx и только xxx в качестве своего файла конфигурации. Если ваш файл получен из upstream, имя раздела, которое вам нужно, такое, usr_cert
как вы, по-видимому, обнаружили, но вам не нужно указывать usr_cert, потому что это значение по умолчанию. Сообщение об ошибке email_in_dn просто осталось в стеке ошибок, и единственной настоящей ошибкой было usr-crt
; после исправления оно -noemailDN
не понадобится, хотя оно вам все равно может понадобиться.
Связано ли это как-то с subjectNameAlt?
Если вы имеете в виду unique_subject
, нет. subjectAltName
(не subjectNameAlt
) также известный как SAN — это распространенное расширение, которое указывает альтернативные имена для субъекта, но unique_subject
относится только к основному Subject
полю, а не к любому SAN.
клиентский сертификат для установки в браузере, который будет выходить в интернет через прокси-сервер
Для ясности: такой клиентский сертификат полезен только для вашей аутентификации.к прокси. Вы не можете использовать сертификат в клиенте/браузере для аутентификации в чем-либо в Интернете через ЛЮБОЙ HTTPS MitM, и вы не можете использовать клиентский сертификат, который вы выдали сами, для аутентификации в чьей-либо другой системе(ах) в Интернете.