EUtornei-me minha própria autoridade certificadoradepois de executar o tutorial em:https://jamielinux.com/docs/openssl-certificate-authority/
Criei um par raiz, criei um par intermediário e assinei um certificado de servidor, que instalei no squid assim:
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
emsquid3.conf
O Squid inicia muito bem com isso. Ainda não tenho certeza se está realmente funcionando ou não.
Quando tento gerar um certificado do lado do cliente para instalar em um navegador que estará acessando a internet através do proxy acabo com um erro:
Eu o gero com base noSeção "Assinar certificados de servidor e cliente" que diz "Criar um certificado"
Afirma que se vou criar um certificado de cliente para autenticação, precisarei usar a extensão 'usr_crt' e então executo:
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
Não entendo por que estou recebendo a mensagem de erro número 2 do TXT_DB quando executo o comando como root (em outra máquina, é claro).
De acordo com o tutorial, devo conseguir alterar o nome comum durante esse processo.
Responder1
TXT_DB error number 2
significa DB_ERROR_INDEX_CLASH.
Você tentou enviar um certificado para o banco de dados OpenSSL CA com o mesmo índice duas vezes.
A causa disso geralmente é o envio de um certificado ao banco de dados que contém o mesmo número de série ou o mesmo nome comum. Para este último, verifique a unique_subject
opção no intermediate/openssl.conf
arquivo, sobre a qual você pode ler em man ca
.
O nome comum de um certificado de cliente pode ser qualquer coisa – seu nome, por exemplo.
O Nome Comum será especificado no intermediate/openssl.conf
arquivo. Ele pode ser configurado para solicitar valores ou ler valores do arquivo de configuração. Isso é controlado pela prompt
opção, sobre a qual você pode ler em man req
.
Responder2
De acordo com o tutorial, devo conseguir alterar o Nome Comum durante este processo
Esse tutorial diz para você gerar uma nova chave com openssl genrsa
E um novo CSR com openssl req -new
E criar o certificado do CSR com openssl ca
. (Embora, como muitas pessoas, diga erroneamente que um certificado é criado 'assinando o CSR'. A CA não assina o CSR. A CA assina o certificado, que criaparcialmente baseado ema RSE, mas é diferente da RSE. /desabafo)
Quando você gera um novo CSRvocê especifica o nome do assunto, incluindo, mas não se limitando ao Nome Comum, que, como diz, deve ser diferente dos certificados de CA acima dele, edevediferem de outros certificados EE para evitar confusão.
openssl ca
na verdade, pode substituir o nome do assunto de um certificado emitido (o nome completo, não o nome comum individualmente), mas isso levará a certificados com nomes diferentes para a mesma chave, o que é, na melhor das hipóteses, desnecessariamente confuso e normalmente menos seguro (embora você não se preocupam com essa parte, outros se preocupam, então não é fácil).
Erro ao carregar a extensão na seção usr-crt
... sem valor ... name=email_in_dn
Isso pode vir de um arquivo de padrões upstream ...
Não diretamente. openssl ca -config xxx
usa xxx, e apenas xxx, como arquivo de configuração. Se o seu arquivo for derivado do upstream, o nome da seção desejada é usr_cert
o que você aparentemente descobriu, mas você não precisa especificar usr_cert porque é o padrão. A mensagem de erro sobre email_in_dn é apenas uma sobra na pilha de erros e o único erro real foi usr-crt
; depois de consertar, isso -noemailDN
não é necessário, embora você possa querer de qualquer maneira.
Isso tem algo a ver com subjectNameAlt?
Supondo que você queira dizer unique_subject
, não. subjectAltName
(não subjectNameAlt
) também conhecido como SAN é uma extensão comum que especifica nomes alternativos para o assunto, mas unique_subject
relaciona apenas o campo básico Subject
e não qualquer SAN.
certificado do lado do cliente para instalar em um navegador que acessará a internet através do proxy
Para ser claro, um certificado de cliente como este só é útil para se autenticarpara o procurador. Você não pode usar um certificado no cliente/navegador para autenticar algo na Internet através de QUALQUER MitM HTTPS e não pode usar um certificado de cliente emitido por você mesmo para autenticar o(s) sistema(s) de outra pessoa na Internet.