(Certificate Authority e Certificado Auto-Assinados)
X.509 é um padrão da ITU (International Telecommunication Union) para a PKI (Public Key Infrastructure). Ele visa gerenciar certificados digitais como: o formato dos certificados, a lista de certificados revogados, atriubutos, algoritimos usados, uso do SSL/TLS, expiração dos certificados etc. O X.509 começou a ser usado em 1988, fazendo a parte da segurança (autenticação) da família X.500 (padronização do Serviço de Diretório - DAP - Directory Access Protocol). Somente para conhecimento uma implementação prática do X.509 é o SSL, do X.509v3 é o SSLv3/TLS e do X.500 é o LDAP (LightWeight DAP). Apesar do X.509 fazer parte da família X.500, ele é totalmente independente, dessa maneira ele pôde ser usado para prover segurança em Servidores Web e Servidores de E-mail sem a necessidade de se utilizar também o X.500. O X.509 depois de um tempo virou a ISO/IEC 9594-8 e o X.500 virou a ISO/IEC 9594-1.
- CA (Certified Authority): Autoridade Certificadora;
- CRT: Chave Pública assinada por um CA. Extensão geralmente utilizada em sistemas Unix/Like (openssl);
- CER: Idem ao CRT, só que utilizado pela Microsoft. Se pode converte CRT para CER utilizando ferramentas da Microsoft;
- PKCS (Public Key Certified Signed ou Public Key Cryptography Standarts): Idem ao CRT;
- CSR (Certified Sign Request): Chave Pública que deve ser assinada por um CA (requisição de assinatura);
- KEY: Chave Privada. Geralmente, toda chave (arquivo) que tem como extesão ".key" é uma chave privada. Na criptografia assimétrica a senha (passphrase) de certificado sempre é colocada na chava privada;
- CRL (Certified Revogation List): Lista de Certificados Revogados;
- PEM (Privacy Enhanced Electronic Mail): Extensão usada tanto para chave pública como para a chave privada. Ex: key.pem e cert.pem;
- PFX: Extensão que contém a chave privada e pública (requisição). Esse extensão é muito usada em sistema da Microsoft como IIS. É possível extrair separadamente aa chaves privada e pública dela. Usa a padronização PKCS.
- OCSP (Online Certificate Status Protocol): É um protocolo de rede para obter o status de revogação de certificados X.509. Isso foi criado como um alternativa para o CRL (Certificate Revocation List);
- PKI (Public Key Infraestructure): Infraestrutura de Chaves Públicas;
- DER:
- P12: pode conter a chave pública e privada;
- P7B:
- P7C:
- JKS (Java Key Store): Contém a chave pública (requisição) e privada. Geralmente um JKS é gerado pela ferramento "keytool" do próprios pacotes de instalação do JAVA;
- ARL (Authority Revocation List): é uma alternativa ao CRL que contém o uma lista de certificado revogado.
- :
- :
- :
- :
Para a instalação de uma CA é recomendado utilizar uma máquina segura onde nenhum outro tipo de serviço esteja sendo oferecido. Em outras palavras, essa máquinas deve ter exclusivida para a CA sendo um equipamento seguro logica e fisicamente. Para a instalação e configuração de uma CA siga os passos a seguir:
Diretório SSL - Antes da instalacao do OpenSSL
# ls -lh /usr/lib/ssl/ (veja o conteudo do diretorio do SSL. So existe um subdiretorio chamado "engines" e dentro dele varias bibliotecas)
Instalação
# apt-get install openssl | yum install openssl openssl-perl
# openssl (modo interativo)
# man openssl (manual do openssl. Para mais manuais, vá no final do manual do openssl e ache o tópico "SEE ALSO")
# man ca
# man crl
# man dgst
# man rqe
# man rsa
# man x509
# man crypto
# man ssl
# man version
# man version -a
Diretorio SSL - Depois da instalacao do OpenSSL
# ls -lh /usr/lib/ssl/ (veja que o conteudo do diretorio do SSL mudou. Existem 4 diretorios e um arquivo onde tres desses diretorios e esse arquivo apontam/links simbolicos para "/etc/ssl/". Perceba tambem com excecao dos diretorios "engines" e "misc" todos estao vazios)
Criação de uma CA (Certificate Authority) e do Root Certificate (certificado raiz) - MANEIRA 1
# vi /etc/ssl/openssl.cnf (edite conforme as suas necessidades, inclusive se pode mudar a quantidade de bits usados para a criptografia (o padrao e default_bits = 1024) e a quatidade de dias de validade do certificado raiz (o padrao e default_days = 365))
# cd /usr/lib/ssl/misc ou /etc/pki/tls/misc
# ./CA.pl -newca (varias informacoes serao necessarias. A primeira será o nome do arquivo do certificado raiz da CA. Aperte "ENTER" e deixe a propria instalacao dar um nome padrao (cacert.pem). A segunda será a PassPhrase para a chave privada da CA (cakey.pem). Digite uma senha bem dificil, pois ela será usada para assinar os certificados de terceiros (servidores, pessoais, outras pessoas etc). A terceira serao de dados necessarios que serao inseridos dentro do certificado raiz da CA como: país, estado, cidade, empresa, nome completo, e-mail etc. Pronto, depois de todas essas informacoes deverao aparecer as seguintes mensagens: "Certificate is to be certified until Jul 12 18:30:07 2014 GMT (1095 days)", "Write out database with 1 new entries" e "Data Base Updated")
Obs: ao terminar os procedimentos anteriores um novo diretorio sera criado "/usr/lib/ssl/misc/demoCA/". Dentro desse diretorio observe os seguintes arquivos "/usr/lib/ssl/misc/demoCA/cacert.pem" e "/usr/lib/ssl/misc/demoCA/private/cakey.pem". O "cacert.pem" é o certificado raiz e o "cakey.pem" é a chave privada da CA.
Criação de uma CA (Certificate Authority) e do Root Certificate (certificado raiz) - MANEIRA 2
# mkdir /root/CA-ssl ; cd /root/CA-ssl ; mkdir certs crl newcerts private ; chmod 700 private ()
# touch index.txt ; echo 1000 > serial ()
# cp /etc/pki/tls/openssl.cnf ./ ; vi openssl.cnf ()
dir = /root/CA-ssl ()
# openssl genrsa -aes256 -out private/cakey.pem 4096 ; chmod 400 cakey.pem (gera a chave privada da CA)
# openssl req -x509 -new -days 1825 -sha256 -key private/cakey.pem -out cacert.pem (gera um certificado auto-assinado da CA. Toda CA possui o seu certicado auto-assinado por ela)
# openssl req -x509 -new -days 1825 -sha256 -key private/cakey.pem -out cacert.pem -config openssl.cnf -extensions v3_OCSP (idem, só que especificando extensão e o arquivo de configuração)
Disponibilizar o certificado da CA
# cd demoCA/ (diretório criado)
# ls (vários arquivos e subdiretórios foram criados. Repare no arquivo "cacert.pem" (certificado raiz da CA) e no arquivo "private\cakey.pem" (chave privada da CA). Também é importante notar um arquivo "careq.pem" que é o certificado raiz da CA sem está assinado pelo própria CA (sem estar auto-assinado). Na verdade, ao iniciar criação de uma CA é gerado um certificado raiz sem assinatura chamado "careq.pem", depois que o processo de criação da CA for concluído um novo certificado auto-assinado surge virando um novo arquivo chamado "cacert.pem".
# cp -i cacert.pem matrinux.crt (pronto, agora basta disponibilizar esse certificado "matrinux.crt" para download. Geralmente ele é inserido em clientes (Browsers, cliente OpenVPN, cliente de E-Mail etc) que usarão algum serviço de servidores como o Web/HTTP Server, OpenVPN Server, E-Mail Server etc. O nome dado para o certificado como "matrinux.crt" é aleatório e eu coloquei assim por que eu vou usá-lo num Browser que acessará um domínio chamado "matrinux.com.br" de uma empresa fictícia chamada Matrinux. Isso é uma padronização individual, caso esse certificado fosse para um domínio "xxx.com.br" para um empresa XXX, eu iria utilizar o comando "cp -i cacert.pem xxx.crt". Contudo, perceba que o certificado raiz da CA é único e ele deve ser usado para todos os servidores/pessoas que desejarem a sua assinatura como Autoridade Certificadora (CA))
Agora acesso o servidor que você criptografar a camunicação, por exemplo, um servidor Web, E-mail, OpenVPN etc. Vamos supor que você deseje usar HTTPs no seu servidor Web. Para isso, você deve seguir 1 das 2 maneiras a seguir:
Diretorio SSL - Antes da instalacao do OpenSSL
# ls -lh /usr/lib/ssl/ (veja o conteudo do diretorio do SSL. So existe um subdiretorio chamado "engines" e dentro dele varias bibliotecas)
Instalação
# apt-get install openssl
Diretorio SSL - Depois da instalacao do OpenSSL
# ls -lh /usr/lib/ssl/ (veja que o conteudo do diretorio do SSL mudou. Existem 4 diretorios e um arquivo onde tres desses diretorios e esse arquivo apontam/links simbolicos para "/etc/ssl/". Perceba tambem com excecao dos diretorios "engines" e "misc" todos estao vazios)
rr
Criação de um Certificado (Request) que deve ser assinado por um CA (Certificate Authority)
# vi /etc/ssl/openssl.cnf (edite conforme as suas necessidades, inclusive se pode mudar a quantidade de bits usados para a criptografia (o padrao e default_bits = 1024) e a quatidade de dias de validade do certificado raiz (o padrao e default_days = 365))
# cd /usr/lib/ssl/misc/
# ./CA.pl -newreq (REQUEST. Varias informacoes serao necessarias. MUITO IMPORTANTE. Va apertando "ENTER" ate chegar em "COMMON NAME". Nessa opcao devemos colocar o hostname (ex: www.matrinux.com.br) quando temos uma infra-estrutura DNS para dar apoio, o IP ( (ex: 200.200.200.200) quando nao temos uma infra-estrutura DNS para dar apoio ou uma combinacao com caracteres como o "*" (ex: *.matrinux.com.br). Cada servico ou servidor devera ter o seu certificado. Por exemplo, o servidor HTTP/Web que tem uma pagina WWW devera ter um certificado onde o "COMMON NAME" deverá ser "www.matrinux.com.br". Ja o serviço de e-mail deverá ter outro certificado onde o "COMMON NAME" será algo do tipo "mail.matrinux.com.br". Tambem pode ser usado um único certificado para dois ou mais servidores usando simplesmente "*.matrinux.com.br" no "COMMON NAME". Pronto, depois de todas essas informacoes deverá aparecer a seguinte mensagens: "Request is in newreq.pem, private key is in newkey.pem")
Obs: ao terminar os procedimentos anteriores, dois novos arquivos serão criados "/usr/lib/ssl/misc/newkey.pem" (chave privada RSA) e o "/usr/lib/ssl/misc/newreq.pem" (certificado não assinado - Request - Requisição de Assinatura).
Instalação
# apt-get install openssl
Criação de um Certificado (Request) que deve ser assinado por um CA (Certificate Authority)
# openssl req -newkey rsa -keyout newkey.pem -out newreq.pem (gera a chave pública [newreq.pem] com 2048 bits de encriptação e a chave privada [newkey.pem]. Será solicitada uma senha)
# openssl req -newkey rsa:2048 -keyout newkey.pem -out newreq.pem (idem, só que especifica que a encriptação será de 2048 bits que é o padrão)
# openssl req -newkey rsa:2048 -keyout newkey.pem -SHA256 -out newreq.pem (Idem, - -SHA256 é o padrão e server para especificar o algoritmo de assinatura. Será solicitada uma senha)
# openssl req -newkey rsa:2048 -keyout newkey.pem -keyform PEM -SHA256 -out newreq.pem (Idem, existem 2 formatos para a geração de certificados: ENGINE e PEM. O PEM é o padrão. Será solicitada uma senha)
# openssl req -newkey rsa:2048 -keyout newkey.pem -keyform PEM -SHA256 -out newreq.pem -config /etc/ssl/openssl.cnf (idem, só que especificando o arquivo de configuração do openssl. Será solicitada uma senha)
# openssl req -passout pass:123 -newkey rsa:2048 -keyout newkey.pem -keyform PEM -SHA256 -out newreq.pem -config /etc/ssl/openssl.cnf (idem, só que especificando a senha)
# openssl req -nodes -newkey rsa:2048 -keyout newkey.pem -keyform PEM -SHA256 -out newreq.pem -config /etc/ssl/openssl.cnf (idem, só que sem senha. NODES = sem DES, isso significa que a chave privada não será encriptada pelo algoritmos DES)
Pronto, agora basta enviar/copiar esse certificado (do servidor Web) "newreq.pem" para a CA assinar. A seguir será mostrado como isso deve ser feito.
Existem 2 maneiras de assinar o certificado. Escolha uma das duas maneiras abaixo:
A CA deve assinar o certificado gerado (ex: newreq.pem) dos servidores (ex: Web) com a sua chave privada (da CA). O browser contém a chave pública (auto-assinada) da CA. Com isso, é sabido que um certificado foi assinado por uma CA válida. Assim, seguindo esse artigo, copie o certificado "newreq.pem" que está lá no servidor Web para a máquina da CA e coloquei-o no diretório "/usr/lib/ssl/misc". Nesse equipamento que tem a CA siga os passos a seguir:
Assinar o certificado (MANEIRA 1)
# cd /usr/lib/ssl/misc ()
# ./CA.pl -sign (esse comando ira procurar por padrao pelo arquivo "newreq.pem" e assinara o mesmo. Sera solicitada a PassPhrase da chave privada da CA "cakey.pem". Depois disso, aparecem algumas informacoes relacionado ao certificado e finalmente o certificado sera assinado. Perceba que um novo arquivo sera criado com o nome "newcert.pem". Uma copia desse certificado assinado tambem e gerado no diretorio "demoCA/newcerts/", conforme comando "diff newcert.pem demoCA/newcerts/CAF56E0B7319342B.pem". Esses arquivos nada mais são do que o "newreq.pem" assinado pela CA)
Assinar o certificado (MANEIRA 2)
# openssl ca -in newreq.pem -out newcert.pem (limitações: The organizationName field needed to be the same in the CA certificate (Stefanini) and the request (DF))
# openssl ca -in newreq.pem -out newcert.pem -policy policy_anything (para evitar as limitações acima, coloque a opção "-policy policy_anything". Essa opção é encontrada dentro do openssl.cnf e ao usar o "openssl ca" é usada a policy "policy_match" que contém várias limitações. Já ao usar o "./CA.pl -sign" é usada a policy "policy__anything)
Assinar o certificado (MANEIRA 3)
# openssl ca -in newreq.pem -out newcert.pem -policy policy_anything -config /root/CA-diferente/openssl.cnf (assinando um certificado com uma CA diferente, especificada na linha "dir = /root/CA-ssl" desse arquivo de configuração)
Obs: ao assinar qualquer certificado, o arquivo "serial" será modificado e conterá o número serial do próximo certificado).
Pronto, agora é so enviar esse certificado assinado (ex: newcert.pem) de volta para o servidor (ex: Web). Esse certificado deverá ser configurado no servidor Web nos arquivos de configuração. É importante evidenciar para que o mesmo seja reconhecido, o certificado raiz da CA (cacert.pem renomeado para matrinux.crt) devera ser instalado no browser do cliente. Eu também aconselho criar um diretório chamada "www.matrix.com.br" para colocar "newreq.pem" e o "newcert.pem" dentro para uma melhor organização.
# openssl rsa -in newkey.pem -out newkey.nopass.pem (retirar a PASSPHRASE da chave privada)Obs: o arquivo "demoCA/index.txt" contém uma lista dos certificados assinados que sao válidos e revogados pela CA (na máquina que é a CA). O simbolo "V" no início da linha significa que o certificado é válido e o "R" que foi revogado. Para revogar um certificado se pode usar esse comando "openssl ca -revoke xyz.crt". Ao utilizar esse comando o arquivo "demoCA/index.txt" será modificado. Ao aparecer o erro "TXT_DB error number 2" é porque já foi gerado um certificado com o mesmo CN (Common Name) e para resolver é necessário revogar o certificado primeiro.
# openssl verify -CAfile /etc/pki/CA/cacert.pem newcert.pem ("cacert.pem" é a chave pública da CA e o "newcert.pem" é o certificado assinado por esta CA. Isso significa que qualquer pessoa pode validar a asssinatura feita por um CA, visto a a chave pública da CA está disponível para qualquer um copiar)
# openssl x509 -req -in newreq.pem -signkey newkey.pem -out newcert.pem (assina a chave pública newreq.pem [requisição de assinatura] feita anteriormente com a própria chave privada dele newkey.pem e gera um novo arquivo newcert.pem que é a chave pública assinada)
# openssl x509 -req -in newreq.pem -signkey newkey.pem -out newcert.pem -days 365 (idem, só que especifica que a validade da assinatura será de 365 dias)
# openssl rsa -in newkey.pem -out newkey.nopass.pem (retirar a PASSPHRASE da chave privada)
PUBLIC KEY (SIGNED KEY)
# cat newcert.pem (mostra o certificado [PUBLIC KEY])
# openssl x509 -in newcert.pem (idem)
# openssl x509 -in newcert.pem -text (mostra dados do certificado como o ISSUER, COMMON NAME, E-MAIL, PUBLIC KEY, BITS DE ENCRIPTAÇÃO [1024bits, 2048bits] etc)
# openssl x509 -in newcert.pem -text -noout -subject -issuer -date (idem só que retira a PUBLIC KEY, mas mostra o SUBJETC, o ISSUER e a data de validade)
# openssl x509 -text -noout -subject -issuer -date < newcert.pem (idem)
NOOUT: não mostra o certificado (o que está entre o "---BEGIN CERTIFICATE---" e "---END CERTIFICATE---");
PUBLIC KEY (REQUEST KEY)
# cat newreq.pem (mostra o certificado [REQUEST KEY])
# openssl req -in newreq.pem (idem)
# openssl req -in newreq.pem -text (idem)
CRL KEY (CERTIFIED REVOGATION LIST KEY)
# cat /etc/pki/CA/crl/newcrl.pem (mostra o conteúdo desse arquivo)
# openssl crl -in /etc/pki/CA/crl/newcrl.pem (idem)
# openssl crl -in /etc/pki/CA/crl/newcrl.pem -text (idem, que mostra todos os atributos desse certificado, inclusive a lista dos certificados revogados)
# openssl pkcs12 -in cert_key.pfx -nokeys -out cert.pem (extrai a chave pública)
# openssl rsa -in key.pem -out key.nopass.pem (retirar a PASSPHRASE da chave privada)
OU ()
# apt-get install ca-certificates-java ; keytool -importkeystore -srckeystore cert_key.jks -destkeystore cert_key.p12 -srcstoretype jks -deststoretype pkcs12 (extrai a chave privada do formato java para pkcs12. Se ele tiver senha, será solicitada a digitação da mesma)
# openssl pkcs12 -in cert_key.p12 -out cert.key (extrai a chave privada para o formato x.509)
# openssl rsa -in cert.key -out cert.key.nopass (retirar a PASSPHRASE da chave privada)
# ()
# keytool -exportcert -alias specific-alias -keystore pub-cer.jks -rfc -file pub-cer.pem (exporta a chave de um alias específico para um formato pem)
# keytool -list -keystore cert.jks ()
# keytool -v -list -keystore cert.jks ()
# keytool -import -trustcacerts -file ca-interm.pub -alias matrinux -keystore cert.jks (importa ou cria um JKS)
# ()
# keytool -import -trustcacerts -file CA.crt -alias matrix -keystore matrix.com.br.jks (senha anterior)
# keytool -importkeystore -srckeystore matrix.com.br.pfx -srcstoretype PKCS12 -destkeystore matrix.com.br.jks (senha anterior)
# keytool -v -list -keystore matrix.com.br.jks-new (senha anterior)
Primeiro é necessário está no servidor da CA e criar uma CA. Geralmente se revoga certificado assinados por esta CA, mas se pode revogar certificados auto-assinados também.
# openssl ca -revoke newcert.pem (revogar o certificado "newcert.pem". A senha da chave privada desta CA será solicitada)Obs: o arquivo "demoCA/index.txt" ou "CA/index.txt" contém uma lista dos certificados assinados que são válidos e revogados pela CA (na máquina que é a CA). O simbolo "V" no início da linha significa que o certificado é válido e o "R" que foi revogado. Para revogar um certificado se pode usar esse comando "openssl ca -revoke xyz.crt". Ao utilizar esse comando o arquivo "demoCA/index.txt" será modificado. Ao aparecer o erro "TXT_DB error number 2" é porque já foi gerado um certificado com o mesmo CN (Common Name) e para resolver é necessário revogar o certificado primeiro.
# openssl ca -gencrl -out /etc/pki/CA/crl/newcrl.pem (essa opção gera um certificado CRL baseado nas informações que estão dentro do arquivo "index.txt". O "index.txt" contém a lista dos certificados válidos e revogados. Resumindo, o "newcrl.pem" contém a lista de certificado revogado)
# cat /etc/pki/CA/crl/newcrl.pem (mostra o conteúdo desse arquivo)
# openssl crl -in /etc/pki/CA/crl/newcrl.pem (idem)
# openssl crl -in /etc/pki/CA/crl/newcrl.pem -text (idem, que mostra todos os atributos desse certificado, inclusive a lista dos certificados revogados)
Se um cliente enviar a mesma requisição antiga ou criar uma nova nova requisição para um certificado já criado. Primeiro se deve revogar esse certificado e assinar novamente a requisição.
# openssl ca -revoke newcert.pem ()# openssl ca -in newreq.pem -out newcert.pem2 -policy policy_anything ()
(ONLINE CERTIFIED STATUS PROTOCOL)
[ v3_OCSP ] (extensão)
authorityInfoAccess = OCSP;URI:http://ocsp.empresa.com.br (necessário)
basicConstraints = CA:FALSE (ver)
keyUsage = nonRepudiation, digitalSignature, keyEncipherment (ver)
extendedKeyUsage = OCSPSigning (ver)
# openssl genrsa -aes256 -out ocspkey.pem 4096 (gera uma chave privada para o OCSP)
# chmod 400 ocspkey.pem (somente o root pode lê)
# openssl req -new -sha384 -key ocspkey.pem -out ocspreq.pem (gera uma requisição para o OCSP)
# openssl ca -extensions v3_OCSP -days 365 -md sha384 -in ocspreq.pem -out ocspcert.pem -policy policy_anything (assina a requisição com a CA padrão do sistema. Na prática a própria CA criará um servidor OCSP. Assim, ela deverá assinar a requisição do certificado do OCSP. Evidentemente que é muito interessante o servidor OCSP não seja o mesmo servidor da CA)
# openssl ocsp -sha384 -index /etc/pki/CA/index.txt -CA /etc/pki/CA/cacert.pem -rkey ocspkey.pem -rsigner ocspcert.pem -text -port 127.0.0.1:2255 (cria um servidor OCSP, abrindo a porta 2255 para o serviço OCSP. Será solicitada a senha da chave privada do OCSP [ocskey.pem]. O "index.txt" contém a lista de certificados válidos e revogado. Importante: quando o "index.txt" for alterado, ou seja, ao validar, revogar ou revalidar certificados, será preciso reexecutado este comando novamente para reler o arquivo com as novas informações)
# openssl ocsp -sha384 -index /etc/pki/CA/index.txt -CA /etc/pki/CA/cacert.pem -rkey ocspkey.pem -rsigner ocspcert.pem -text -port 127.0.0.1:2255 -nrequest 1 (idem, só que esse servidor aceitará somente um requisição [-nrequest 1])
(BROWSER)
A checagem do CRL e/ou OCSP varia muito de acordo com o meio utilizado. O meio mais comum é a dos Browsers. Mesmo assim, cada Browser utiliza esses dois recursos de maneiras diferetes. O Firefox não usa mais o CRL, mas somente o OCSP, sendo ele uma opção que se pode habilitar e desabilitar (Tools>Options>Advanced>Certifiecates>OCSP). O Chrome usa seu próprio mecanismo de atualização para manter um lista de certificados revogados. O Internet Explorer usa tanto o OCSP e o CRL, caso o primeiro falhe é usado o segundo, sendo que isso pode ser visto em Tools>Internet Options>Advanced na seção "Security".
Nos Browsers as opções para CRL e OCSP são bem limitadas, na maioria se pode somente habilita ou desabilitar. O Chrome, por exemplo, nem opções tem para isso.
# mkdir /home/bob ; cd /home/bob ()
# openssl req -nodes -newkey rsa -keyout bobkey.pem -out bobreq.pem (gera a requisição de BOB)
# openssl x509 -req -in bobreq.pem -signkey bobkey.pem -out bobcert.pem (BOB assina seu próprio certificado, ou seja, auto-assinado)
()
# mkdir /home/alice ; cd /home/alice ()
# openssl req -nodes -newkey rsa -keyout alicekey.pem -out alicereq.pem (gera a requisição de ALICE)
# openssl x509 -req -in alicereq.pem -signkey alicekey.pem -out alicecert.pem (ALICE assina seu próprio certificado, ou seja, auto-assinado)
# openssl verify -CAfile /home/bob/bobcert.pem /home/bob/bobcert.pem (ALICE verifica a assinatura de BOB. Isso é bem hipotético e inseguro, mas isso pode ser feito. As próximas etapas vão ficar mais interessantes)
# cp /home/bob/bobreq.pem /home/alice/ (BOB envia a sua requisição para ALICE)
# openssl x509 -req -in bobreq.pem -signkey alicekey.pem -out bobCert-aliceSign.pem (ALICE assina a requisição de BOB)
()
()
# mkdir /home/cecilia ; cd /home/cecilia ()
# openssl req -nodes -newkey rsa -keyout ceciliakey.pem -out ceciliareq.pem (gera a requisição de CECILIA)
# openssl x509 -req -in ceciliareq.pem -signkey ceciliakey.pem -out ceciliacert.pem (CECILIA assina seu próprio certificado, ou seja, auto-assinado)
()
- Signature Algorithm: mostra a assinatura da CA na chave pública assinada. A CA assina um certificado com a chave privada da própria CA. Também mostra com o algoritmo usado na assinatura. Ex:
- Issuer: dados da CA que assinou;
- Subject: dados do cache pública como o COMMON NAME (CN);
Obs: quando o ISSUER é igual ao SUBJECT significa que o certificado é auto-assinado. Toda chave publica de um CA é auto-assinado.
Referências Bibliográgicas
http://www.vivaolinux.com.br/artigo/Configurando-o-OpenVPN-para-multiplos-clientes/?pagina=3
RFC5280
RFC6818