GNU/Linux
 
 
CA e Self-Signed Certificate
(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.


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)





CRIAR UMA CA (CERTIFIED AUTHORITY)



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))





CRIAR CERTIFICADO PARA OS SERVIDORES

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:




CRIAR CERTIFICADO PARA OS SERVIDORES - MANEIRA 1 (REQUISIÇÃO)


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).



CRIAR CERTIFICADO PARA OS SERVIDORES - MANEIRA 2 (REQUISIÇÃO)


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.






ASSINAR O CERTIFICADO DE SERVIDORES

Existem 2 maneiras de assinar o certificado. Escolha uma das duas maneiras abaixo:




ASSINAR O CERTIFICADO DE SERVIDORES COM A CA

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.



VERIFICAR CERTIFICADOS ASSINADOS POR UMA CA

# 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)




AUTO-ASSINAR CERTIFICADO (SELF-SIGNED)

# 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)






VERIFICAR DADOS DO CERTIFICADO



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)





PFX (PKCS) - EXTRAIR A CHAVE PÚBLICA E PRIVADA DE UM PFX

# openssl pkcs12 -in cert_key.pfx -nocerts -out key.pem -nodes (extrai a chave privada. Se ele tiver senha, será solicitada a digitação da mesma)
# 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)







PFX (PKCS) - GERAR UM PFX DE UMA CHAVE PÚBLICA E PRIVADA

# openssl pkcs12 -inkey key.pem -in cert.pem -export -out cert_key.pfx (gera a chave PFX)





JKS (JAVA) - EXTRAIR A CHAVE PRIVADA

# openssl pkcs12 -in concursodesenvolvimentodejogos.sebrae.com.br.key2.jks -out concursodesenvolvimentodejogos.sebrae.com.br.key2 ()
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)
# ()






JKS (JAVA) - GERAR UM JKS A PARTIR DE CRT, KEY E CA

# openssl pkcs12 -export -inkey matrix.com.br.key -in matrix.com.br.cer -name matrix -out matrix.com.br.pfx (-name = alias. Necessário, por senha)
# 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)






REVOGAR CERTIFICADOS GERADOS POR UMA CA

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.





GERAR LISTA DE CERTIFICADOS REVOGADOS (CRL) DE UMA CA

# echo "01" > /etc/pki/CA/crlnumber (número serial para o CRL. A cada geração do CRL esse arquivo é incrementado)
# 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)





RENOVAR CERTIFICADOS DE UMA CA

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 ()





OCSP
(ONLINE CERTIFIED STATUS PROTOCOL)



OCSP (CRIAR O SERVIDOR)

# vi openssl.cnf ()
[ 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])



OCSP (TESTAR O SERVIDOR)

# openssl ocsp -CAfile /etc/pki/CA/cacert.pem -issuer /etc/pki/CA/cacert.pem -cert hugo2cert.pem -resp_text -url http://127.0.0.1:2255 (procure pela linha "Cert Status" se ele for "good" é porque o certificado está válido, se estiver "revoked" regovado e se ter "unknown" é preciso averiguar outros problemas. O hugo2cert.pem é um certificado assinado pela CA)





CRL vs OCSP
(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.






ESTUDO DE CASO

()
# 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)
()





ATRIBUTOS DO CERTIFICADO






EXTENSÃO

# openssl req -x509 -new -days 1825 -sha256 -extensions v3_ca -key private/cakey.pem -out cacert.pem (idem, mas especificando uma extensão)




Referências Bibliográgicas
http://www.vivaolinux.com.br/artigo/Configurando-o-OpenVPN-para-multiplos-clientes/?pagina=3
RFC5280
RFC6818
 
 


ETI - Especialista em Tecnologia
da Informação