Criando Autoridades Certificadores e Certificados de Testes no Linux

Script Linux destinado à criação de Cadeias de Autoridades Certificadores semelhantes às da ICP-Brasil. O script permite também criar Certificados de Testes para usuários, geração de Listas de Certificados Revogados e Assinatura de Certificados criados por meio de qualquer aplicação ou website.

[ Hits: 92.050 ]

Por: Larry Ramos em 12/09/2008


Perguntas que ninguém teve tempo pra te responder



A seguir estão algumas perguntas que acumulei ao longo da minha experiência no trabalho com Certificação Digital e tive tempo pra responder e ajudar outras pessoas a entender esse complicado mundo da criptografia. É óbvio que não estão aqui todas as perguntas possíveis, mas qualquer outra mande para meu e-mail que estarei pronto para responder.

1. Afinal, o que é um certificado digital?

É um arquivo. Dentro deste arquivo estão seus dados pessoais que uma pessoa (no mundo real) digitou em um sistema, conferiu com os documentos pessoais e um sistema de computador (chamado Autoridade Certificadora) assinou este arquivo usando uma série de funções matemáticas.

2. Quais informações são guardadas no certificado?

Isto depende do órgão emissor. As informações mais comuns são: Nome completo, RG, CPF, Título Eleitoral, PIS/PASEP, e-mail e qualquer outra informação que a Autoridade Certificadora (AC) achar pertinente.

A maioria desses dados fica em um formato ilegível, sendo necessário o uso de um software específico para visualizá-los.

3. Como saber quais informações a AC guardou em meu certificado?

Os certificados possuem um campo chamado "Diretivas do Certificado" ou "Políticas do Certificado", o qual é composto por 2 valores: um número identificador, único no mundo inteiro e uma URL, como por exemplo:

http://my-website.com.br/repositorio/dpcLINUX_BRASIL.pdf

Note que este arquivo é um simples arquivo PDF comum. Neste arquivo fica especificado o conteúdo dos certificados emitidos por esta AC, bem como outras informações sobre seu funcionamento.

4. Por que dizem que o Certificado é a solução para os problemas de autenticação?

Pois a emissão de um certificado exige o cumprimento de uma série de normas, tanto por parte dos usuários quanto por parte dos órgãos emissores.

Outro ponto importante a destacar é a inviolabilidade de alguns dispositivos, como tokens e smartcards. Os smartcards, diferentemente dos cartões magnéticos, não são facilmente lidos, além disso são regidos por um princípio básico: não podem ser clonados.

Resumindo, quando todas essas exigências são cumpridas, uma aplicação Web pode ter certeza de que aquele certificado foi emitido por meio de normas rígidas e, excetuando-se a possibilidade de o titular do certificado passar sua senha para outrem, é o próprio dono do certificado que está do outro lado.

5. Posso alterar os arquivos de configuração do software?

Pode e deve. O software deve atender às suas necessidades acima de tudo. Quaisquer melhorias que você fizer e quiser compartilhar fique à vontade. Recomenda-se a leitura dos manuais do OpenSSL, disponíveis em www.openssl.org.

Página anterior     Próxima página

Páginas do artigo
   1. Conceitos básicos
   2. Perguntas que ninguém teve tempo pra te responder
   3. Instalação do Software
   4. Criando uma nova estrutura de Autoridade Certificadora (AC)
   5. Criando certificados de usuários
   6. Criando certificados de aplicações e websites
   7. Atualizando a validade de uma LCR
   8. Revogando um certificado de usuário
   9. Verificado as cadeias existentes
   10. Comandos úteis do OpenSSL
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Script com muitas utilidades para arquivos e pastas

getopts: criando scripts Bash com parâmetros e argumentos personalizáveis

Processamento Paralelo em Shell Script - Conversão de Arquivos WAV para MP3

Como programar backup com rsync e cron de maneira rápida e simples

Assinatura de documentos PDF em lote via Bash

  
Comentários
[1] Comentário enviado por grandmaster em 12/09/2008 - 21:05h

Ta bem legal. Mostrando passo a passo a coisa.

---
Renato de Castro Henriques
CobiT Foundation 4.1 Certified ID: 90391725
http://www.renato.henriques.nom.br

[2] Comentário enviado por larry.ramos em 16/09/2008 - 15:05h

Nota do autor: Segue o link para download do programa openssl_certs, citado no artigo:
http://www.go2linux.com.br/arquivos/openssl_certs.tar

Desculpem a falha!

Larry Ramos

[3] Comentário enviado por jefflee em 30/09/2008 - 13:09h

Olá Pessoal,

Excelente artigo, pois também mostra a importância e benefícios dos certificados digitais.

Jefferson Campos
GeoCert - http://www.rapidssl.com.br

[4] Comentário enviado por klebervirgilio em 10/02/2009 - 14:14h

Cara... não sei se aplica ao conteúdo deste artigo, mas talvez vc possa me ajudar!

Eu uso o Ubuntu 8.10, e tenho que acessar uma rede Wifi onde os administradores fornecem Certificados.cer para o acesso!

Minha pergunta é, como instalar o "*.cer" no Linux/Ubuntu ????

[5] Comentário enviado por larry.ramos em 12/02/2009 - 18:50h

Amigo, realmente esse item não é o meu forte, mas provavelmente você terá que fazer essa instalação usando o software gerenciador da rede Wifi (talvez o KNetwork Manager, que é o mais usado).
Larry

[6] Comentário enviado por naarea em 23/02/2011 - 14:08h

Por acaso alguem sabe aonde encontro uma fonte do http://www.go2linux.com.br/arquivos/openssl_certs.tar pois esse dominio já foi embora.

[7] Comentário enviado por larry.ramos em 26/04/2011 - 14:24h

Prezado naarea e demais interessados no Script referente a este artigo, segue o link do Script: http://code.google.com/p/certificacao-digital/downloads/detail?name=openssl_certs.tar.gz&can=2&q=

att,
Larry

[8] Comentário enviado por arianecf em 30/06/2011 - 17:07h

Caros, ao executar o script e criar uma nova cadeia de AC, várias mensagens de erro foram apresentadas. Alguém saberia dizer o problema?
Informe um nome para o diretorio da AC:
AC_Teste
awk: aviso: seqüência de escape `\/' tratada como `/' normal
awk: aviso: seqüência de escape `\/' tratada como `/' normal
awk: aviso: seqüência de escape `\/' tratada como `/' normal
sed: -e expressão #1, caractere 20: unknown option to `s'
sed: -e expressão #1, caractere 20: unknown option to `s'
sed: -e expressão #1, caractere 19: unknown option to `s'
sed: -e expressão #1, caractere 28: unknown option to `s'
Generating a 2048 bit RSA private key
................................................................................
................................................................................
...........................................................+++
...............................+++
writing new private key to './ACs/AC_Teste/private/ACRAIZ.pem'
-----
unable to find 'distinguished_name' in config
problems making Certificate Request
20660:error:0E06D06C:configuration file routines:NCONF_get_string:no value:conf_
lib.c:329:group=req name=distinguished_name
Error opening Certificate ./ACs/AC_Teste/certs/ACRAIZ.pem.cer
20661:error:02001002:system library:fopen:No such file or directory:bss_file.c:3
52:fopen('./ACs/AC_Teste/certs/ACRAIZ.pem.cer','r')
20661:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:354:
unable to load certificate
Error opening Certificate ./ACs/AC_Teste/certs/ACRAIZ.der.cer
20662:error:02001002:system library:fopen:No such file or directory:bss_file.c:3
52:fopen('./ACs/AC_Teste/certs/ACRAIZ.der.cer','r')
20662:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:354:
unable to load certificate
**** Assinatura do certificado da AC LINUX ****
Using configuration from ./ACs/AC_Teste/conf_openssl_LINUX.conf
Generating a 2048 bit RSA private key
.........................................................................+++
......+++
writing new private key to './ACs/AC_Teste/private/privada_LINUX.pem'
-----
unable to find 'distinguished_name' in config
problems making Certificate Request
20663:error:0E06D06C:configuration file routines:NCONF_get_string:no value:conf_
lib.c:329:group=req name=distinguished_name
Using configuration from ./ACs/AC_Teste/conf_openssl_LINUX.conf
variable lookup failed for ca::default_ca
20666:error:0E06D06C:configuration file routines:NCONF_get_string:no value:conf_
lib.c:329:group=ca name=default_ca
Error opening Certificate ./ACs/AC_Teste/certs/LINUX.pem.cer
20667:error:02001002:system library:fopen:No such file or directory:bss_file.c:3
52:fopen('./ACs/AC_Teste/certs/LINUX.pem.cer','r')
20667:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:354:
unable to load certificate
Error opening Certificate ./ACs/AC_Teste/certs/LINUX.der.cer
20668:error:02001002:system library:fopen:No such file or directory:bss_file.c:3
52:fopen('./ACs/AC_Teste/certs/LINUX.der.cer','r')
20668:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:354:
unable to load certificate
**** Assinatura do certificado da AC LINUX BRASIL ****
Using configuration from ./ACs/AC_Teste/conf_openssl_LINUX_BRASIL.conf
Generating a 2048 bit RSA private key
...............+++
.......+++
writing new private key to './ACs/AC_Teste/private/privada_LINUX_BRASIL.pem'
-----
unable to find 'distinguished_name' in config
problems making Certificate Request
20669:error:0E06D06C:configuration file routines:NCONF_get_string:no value:conf_
lib.c:329:group=req name=distinguished_name
Using configuration from ./ACs/AC_Teste/conf_openssl_LINUX_BRASIL.conf
variable lookup failed for ca::default_ca
20670:error:0E06D06C:configuration file routines:NCONF_get_string:no value:conf_
lib.c:329:group=ca name=default_ca
Error opening Certificate ./ACs/AC_Teste/certs/LINUX_BRASIL.pem.cer
20671:error:02001002:system library:fopen:No such file or directory:bss_file.c:3
52:fopen('./ACs/AC_Teste/certs/LINUX_BRASIL.pem.cer','r')
20671:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:354:
unable to load certificate
Error opening Certificate ./ACs/AC_Teste/certs/LINUX_BRASIL.der.cer
20672:error:02001002:system library:fopen:No such file or directory:bss_file.c:3
52:fopen('./ACs/AC_Teste/certs/LINUX_BRASIL.der.cer','r')
20672:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:354:
unable to load certificate
Using configuration from ./ACs/AC_Teste/conf_openssl_ACRAIZ.conf
variable lookup failed for ca::default_ca
20673:error:0E06D06C:configuration file routines:NCONF_get_string:no value:conf_
lib.c:329:group=ca name=default_ca
Using configuration from ./ACs/AC_Teste/conf_openssl_LINUX.conf
variable lookup failed for ca::default_ca
20674:error:0E06D06C:configuration file routines:NCONF_get_string:no value:conf_
lib.c:329:group=ca name=default_ca
Using configuration from ./ACs/AC_Teste/conf_openssl_LINUX_BRASIL.conf
variable lookup failed for ca::default_ca
20675:error:0E06D06C:configuration file routines:NCONF_get_string:no value:conf_
lib.c:329:group=ca name=default_ca

[9] Comentário enviado por manoel.junior em 11/12/2019 - 17:38h


[8] Comentário enviado por arianecf em 30/06/2011 - 17:07h

Caros, ao executar o script e criar uma nova cadeia de AC, várias mensagens de erro foram apresentadas. Alguém saberia dizer o problema?
Informe um nome para o diretorio da AC:
AC_Teste
awk: aviso: seqüência de escape `\/' tratada como `/' normal
awk: aviso: seqüência de escape `\/' tratada como `/' normal
awk: aviso: seqüência de escape `\/' tratada como `/' normal
sed: -e expressão #1, caractere 20: unknown option to `s'
sed: -e expressão #1, caractere 20: unknown option to `s'
sed: -e expressão #1, caractere 19: unknown option to `s'
sed: -e expressão #1, caractere 28: unknown option to `s'
Generating a 2048 bit RSA private key
................................................................................
................................................................................
...........................................................+++
...............................+++
writing new private key to './ACs/AC_Teste/private/ACRAIZ.pem'
-----
unable to find 'distinguished_name' in config
problems making Certificate Request
20660:error:0E06D06C:configuration file routines:NCONF_get_string:no value:conf_
lib.c:329:group=req name=distinguished_name
Error opening Certificate ./ACs/AC_Teste/certs/ACRAIZ.pem.cer
20661:error:02001002:system library:fopen:No such file or directory:bss_file.c:3
52:fopen('./ACs/AC_Teste/certs/ACRAIZ.pem.cer','r')
20661:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:354:
unable to load certificate
Error opening Certificate ./ACs/AC_Teste/certs/ACRAIZ.der.cer
20662:error:02001002:system library:fopen:No such file or directory:bss_file.c:3
52:fopen('./ACs/AC_Teste/certs/ACRAIZ.der.cer','r')
20662:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:354:
unable to load certificate
**** Assinatura do certificado da AC LINUX ****
Using configuration from ./ACs/AC_Teste/conf_openssl_LINUX.conf
Generating a 2048 bit RSA private key
.........................................................................+++
......+++
writing new private key to './ACs/AC_Teste/private/privada_LINUX.pem'
-----
unable to find 'distinguished_name' in config
problems making Certificate Request
20663:error:0E06D06C:configuration file routines:NCONF_get_string:no value:conf_
lib.c:329:group=req name=distinguished_name
Using configuration from ./ACs/AC_Teste/conf_openssl_LINUX.conf
variable lookup failed for ca::default_ca
20666:error:0E06D06C:configuration file routines:NCONF_get_string:no value:conf_
lib.c:329:group=ca name=default_ca
Error opening Certificate ./ACs/AC_Teste/certs/LINUX.pem.cer
20667:error:02001002:system library:fopen:No such file or directory:bss_file.c:3
52:fopen('./ACs/AC_Teste/certs/LINUX.pem.cer','r')
20667:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:354:
unable to load certificate
Error opening Certificate ./ACs/AC_Teste/certs/LINUX.der.cer
20668:error:02001002:system library:fopen:No such file or directory:bss_file.c:3
52:fopen('./ACs/AC_Teste/certs/LINUX.der.cer','r')
20668:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:354:
unable to load certificate
**** Assinatura do certificado da AC LINUX BRASIL ****
Using configuration from ./ACs/AC_Teste/conf_openssl_LINUX_BRASIL.conf
Generating a 2048 bit RSA private key
...............+++
.......+++
writing new private key to './ACs/AC_Teste/private/privada_LINUX_BRASIL.pem'
-----
unable to find 'distinguished_name' in config
problems making Certificate Request
20669:error:0E06D06C:configuration file routines:NCONF_get_string:no value:conf_
lib.c:329:group=req name=distinguished_name
Using configuration from ./ACs/AC_Teste/conf_openssl_LINUX_BRASIL.conf
variable lookup failed for ca::default_ca
20670:error:0E06D06C:configuration file routines:NCONF_get_string:no value:conf_
lib.c:329:group=ca name=default_ca
Error opening Certificate ./ACs/AC_Teste/certs/LINUX_BRASIL.pem.cer
20671:error:02001002:system library:fopen:No such file or directory:bss_file.c:3
52:fopen('./ACs/AC_Teste/certs/LINUX_BRASIL.pem.cer','r')
20671:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:354:
unable to load certificate
Error opening Certificate ./ACs/AC_Teste/certs/LINUX_BRASIL.der.cer
20672:error:02001002:system library:fopen:No such file or directory:bss_file.c:3
52:fopen('./ACs/AC_Teste/certs/LINUX_BRASIL.der.cer','r')
20672:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:354:
unable to load certificate
Using configuration from ./ACs/AC_Teste/conf_openssl_ACRAIZ.conf
variable lookup failed for ca::default_ca
20673:error:0E06D06C:configuration file routines:NCONF_get_string:no value:conf_
lib.c:329:group=ca name=default_ca
Using configuration from ./ACs/AC_Teste/conf_openssl_LINUX.conf
variable lookup failed for ca::default_ca
20674:error:0E06D06C:configuration file routines:NCONF_get_string:no value:conf_
lib.c:329:group=ca name=default_ca
Using configuration from ./ACs/AC_Teste/conf_openssl_LINUX_BRASIL.conf
variable lookup failed for ca::default_ca
20675:error:0E06D06C:configuration file routines:NCONF_get_string:no value:conf_
lib.c:329:group=ca name=default_ca



Peguei este erro e resolvi alterando de:

LCR_ACRAIZ=`echo ${LCR_ACRAIZ} | awk '{gsub("/","\/");printf"%s",$0}'`
LCR_LINUX=`echo ${LCR_LINUX} | awk '{gsub("/","\/");printf"%s",$0}'`
LCR_ACLINUX_BRASIL=`echo ${LCR_ACLINUX_BRASIL} | awk '{gsub("/","\/");printf"%s",$0}'`

Para:

LCR_ACRAIZ=`echo ${LCR_ACRAIZ} | awk '{gsub("/","\\\\/");printf"%s",$0}'`
LCR_LINUX=`echo ${LCR_LINUX} | awk '{gsub("/","\\\\/");printf"%s",$0}'`
LCR_ACLINUX_BRASIL=`echo ${LCR_ACLINUX_BRASIL} | awk '{gsub("/","\\\\/");printf"%s",$0}'`

[10] Comentário enviado por diihdayrel em 25/02/2020 - 19:20h

Alguém sabe como resolver este erro? [RESOLVIDO]



tznode@tznode:/opt/openssl_certs$ sudo su
root@tznode:/opt/openssl_certs# ls -al
total 52
drwxrwxrwx 3 root root 4096 fev 25 19:12 .
drwxr-xr-x 10 root root 4096 fev 25 19:12 ..
drwxrwxrwx 3 root root 4096 fev 25 19:12 ACs
-rwxrwxrwx 1 tznode tznode 2603 set 10 2008 conf_openssl_ACRAIZ_padrao.conf
-rwxrwxrwx 1 tznode tznode 2774 set 10 2008 conf_openssl_LINUX_BRASIL_padrao.conf
-rwxrwxrwx 1 tznode tznode 2547 set 10 2008 conf_openssl_LINUX_padrao.conf
-rwxrwxrwx 1 tznode tznode 3049 set 10 2008 conf_openssl_USER_LINUX_BRASIL_padrao.conf
-rwxrwxrwx 1 tznode tznode 18252 fev 25 19:10 Criar_Certificados.sh
-rwxrwxrwx 1 tznode tznode 12 set 10 2008 pass
root@tznode:/opt/openssl_certs# ./Criar_Certificados.sh
***********************************************************************
* Script para Criacao de ACs e Certificados de Usuarios *
***********************************************************************
Lembrete:
A senha das chaves privadas fica gravada no arquivo ./pass e eh 'linux'
-----------------------------------------------------------------------
Escolha a opcao desejada:
1 - Para criar Nova Cadeia de AC
2 - Para Certificados de Usuarios
3 - Para atualizar uma LCR
4 - Para revogar um certificado
5 - Mostrar as Cadeias existentes
1
./Criar_Certificados.sh: 20: [: 1: unexpected operator
./Criar_Certificados.sh: 162: [: 1: unexpected operator
./Criar_Certificados.sh: 240: [: 1: unexpected operator
./Criar_Certificados.sh: 307: [: 1: unexpected operator
./Criar_Certificados.sh: 348: [: 1: unexpected operator
root@tznode:/opt/openssl_certs#


Encontrei a resposta:
Problemas na execução do script e troca de operador == por =


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts