Meu trabalho decidiu emitir sua própria autoridade de certificação (CA) para lidar com diferentes aspectos de nosso trabalho com segurança, sem pagar pelos certificados.
- Assinar criptograficamente emails
- Criptografar o conteúdo do email
- Tenha acesso a coisas como o certificado de cliente IRC da empresa .
- Revogar as chaves de ex-funcionários automaticamente
Eles me enviaram um .pem
arquivo e não sei como adicioná-lo à minha instalação do Ubuntu. As instruções enviadas foram: "Clicar duas vezes nele no Mac deve instalá-lo."
Como procedo? Preciso fazer alguma coisa com OpenSSL para criar uma .key
, .csr
ou .crt
arquivo?
ubuntu
certificate
trusted-root-certificates
Xeoncross
fonte
fonte
Respostas:
Instalando uma CA
Copie seu certificado no formato PEM (o formato que contém
----BEGIN CERTIFICATE----
)/usr/local/share/ca-certificates
e atribua um nome a ele com uma.crt
extensão de arquivo.Então corra
sudo update-ca-certificates
.Advertências: Esta instalação afeta apenas produtos que usam este armazenamento de certificados. Alguns produtos podem usar outros armazenamentos de certificados; se você usar esses produtos, precisará adicionar esse certificado da CA a esses outros armazenamentos de certificados. ( Instruções para Firefox , Instruções para Chrome , Instruções para Java )
Testando a CA
Você pode verificar se isso funcionou procurando o certificado que você acabou de adicionar
/etc/ssl/certs/ca-certificates.crt
(que é apenas uma longa lista de todas as suas CAs confiáveis concatenadas juntas).Você também pode usar o s_client do OpenSSL tentando se conectar a um servidor que você sabe que está usando um certificado assinado pela CA que você acabou de instalar.
A primeira coisa a procurar é a cadeia de certificados próxima à parte superior da saída. Isso deve mostrar a CA como emissor (ao lado de
i:
). Isso indica que o servidor está apresentando um certificado assinado pela CA que você está instalando.Segundo, procure
verify return code
no final a ser definido como0 (ok)
.fonte
crt
comentário da extensão, que era o segredo para obter esse trabalho para mim, recebi um certificado com umacert
extensão e fiquei confuso sobre o motivo de nada estar funcionando.s_client
não envia SNI por padrão e o servidor pode precisar de SNI, especialmente se ele suportar hosts / sites virtuais com certificados diferentes; para este caso, adicione-servername foo.whatever.com
. Ou se for um servidor da Web (versões modernas)curl
ou owget
SNI automaticamente.man update-ca-certificates :
Pelo exposto, inferiria que a maneira preferida de obter arquivos de certificado local no armazenamento confiável é colocá-los
/usr/local/share/ca-certificates
e, em seguida, executarupdate-ca-certificates
. Você não precisa tocar/etc/ssl/certs
diretamente.fonte
--fresh
para fazê-lo funcionar. por exemploupdate-ca-certificates --fresh
Eu tive o mesmo problema e precisei copiar o
.pem
arquivo para/usr/local/share/ca-certificates
renomeá-lo como.crt
. O.cer
arquivo pode ser facilmente convertido para.pem
, com o openssl, por exemplo, se você não tiver o.pem
.Após copiar o arquivo, você deve executar
sudo update-ca-certificates
.fonte
openssl x509 -inform DER -in certificate.cer -out certificate.crt
As outras respostas relacionadas
update-ca-certificates
estão corretas para aplicativos que são lidos no armazenamento de certificados do sistema. Para Chrome e Firefox, e provavelmente alguns outros, o certificado deve ser colocado no nssdb, o backend da biblioteca Mozilla NSS.Em https://code.google.com/p/chromium/wiki/LinuxCertManagement :
Onde
<certificate nickname>
é arbitrário e<certificate filename>
é o seu arquivo .pem ou .crt.Outras referências úteis:
certutil
manual, descrevendo os parâmetros usados acima: https://developer.mozilla.org/en-US/docs/NSS_reference/NSS_tools_:_certutilfonte
mkdir -p $HOME/.pki/nssdb && chmod -R 0700 $HOME/.pki && certutil -d sql:$HOME/.pki/nssdb -N --empty-password
Para compilações mais recentes baseadas no Debian, você pode precisar executar:
NOTA: O sudo dpkg-reconfigure ca-certificates chama update-ca-certificates internamente
Obviamente, você ainda precisará copiar o certificado (arquivo .crt) para / usr / share / ca-certificates antes de fazer isso :)
fonte
Com base na resposta do dwmw2 , você pode realmente dizer aos aplicativos que usam o NSS para seu gerenciamento de certificados usar o armazenamento confiável do sistema.
libnss3
por padrão, é fornecido com um conjunto de certificados CA raiz (somente leituralibnssckbi.so
), portanto, na maioria das vezes, você deve adicioná-los manualmente ao repositório de confiança do usuário local localizado em$HOME/.pki/nssdb
.p11-kit
oferece uma substituição de entradalibnssckbi.so
que atua como um adaptador para os certificados raiz de todo o sistema instalados no/etc/ssl/certs
.Editar:
Parece haver mais versões
libnssckbi.so
lá fora do que apenas dentrolibnss3
. A seguir, é apresentado um script para encontrar todos eles, fazer backup deles e substituí-los por links parap11-kit
:Instruções originais:
Para fazer isso, instale
p11-kit
elibnss3
(se ainda não estiver instalado novamente):Em seguida, faça backup do existente
libnssckbi.so
fornecido porlibnss3
:Por fim, crie o link simbólico:
Para confirmar que funcionou, você pode executar
ll /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so
e deve mostrar o link:Agora, se você adicionar um certificado ao armazenamento da CA usando
update-ca-certificates
, esses certificados estarão disponíveis para aplicativos usando o NSS (libnss3
) como o Chrome.fonte
Como observado, vários aplicativos que usam o NSS têm seu próprio armazenamento de certificados. Como as coisas estão no Ubuntu, você precisa usar manualmente
certutil
para adicionar suas CAs para cada aplicativo, para cada usuário.Em outras distribuições como o Fedora, esse tipo de coisa Just Works ™ e você deve registrar um bug em qualquer aplicativo que não confie automaticamente nas CAs com as quais você instala
update-ca-trust
.Você também pode corrigir isso no Ubuntu instalando o
p11-kit-modules
pacote e substituindo o módulo de raízes de confiança interno do NSSp11-kit-trust.so
por, criando um link simbólico, por exemplo, de/usr/lib/firefox/libnssckbi.so
para/usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so
Então você vai obter raízes de confiança configurado do sistema, e não alguns mais hard-coded. Observe que o Ubuntu envia várias cópias diferentes dessa biblioteca libnssckbi.so com as raízes de confiança codificadas e você precisa substituir todas elas!
cf. https://bugs.launchpad.net/ubuntu/+source/nss/+bug/1647285
fonte
sudo find / -type f -name "libnssckbi.so"
, ele encontroulibnssckbi.so
em três locais:/usr/lib/thunderbird/
,/usr/lib/firefox/
, e/usr/lib/x86_64-linux-gnu/nss/
. Então você está dizendo que eu deveria vincular o arquivolibnssckbi.so
nas três pastasp11-kit-trust.so
?/usr/lib/x86_64-linux-gnu/nss/libnssckbi.so
->/usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so
funcionava como um encanto. Consegui adicionar um certificado/usr/local/share/ca-certificates
, executarsudo update-ca-certificates
e PRESTO, o Chrome começou a aceitar os certificados autoassinados.Resposta seriamente estúpida para adicionar aqui, mas eu tinha passado duas horas indo e voltando com certutils no linux ... eu tinha certeza de que tudo estava correto:
Mas ainda assim, no cromo, nada estava funcionando. Eu tentei de tudo, no final ....
Restarting Chrome
Foi a chave do meu sucesso depois de seguir: Conselho de Steven Monday
fonte