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: 91.129 ]

Por: Larry Ramos em 12/09/2008


Criando certificados de aplicações e websites



Para certificados de aplicação (websites e servidores) você provavelmente precisará fazer a geração das chaves e da requisição PKCS#10 no próprio servidor/aplicação. Este processo de geração depende do software que você usa, portanto não consigo ajudá-lo muito.

Em termos práticos, o software que você está usando irá gerar um arquivo em um formato específico (PKCS#10), guardará a chave privada e ficará esperando que você apresente o certificado assinado por uma Autoridade Certificadora.

No momento de geração da requisição, a aplicação pedirá que você informe os valores para o campo DN. Você deve informar os seguintes dados:

Campo / DescriçãoExemplo
CN = Nome_WebSite_ou_Servidorwww.meu-website.com.br
OU = Unidade da OrganizaçãoCertificados de Testes AC Linux
OU = Unidade da OrganizaçãoAC LINUX BRASIL
O = OrganizaçãoICP-Brasil
C = PaísBR


O tamanho das chaves deverá ser, no mínimo, 1024 bytes.

Em seguida será criado um arquivo, geralmente em formato PEM o qual você deverá guardar para uso no script.

A partir deste momento sua aplicação ficará esperando que você apresente um arquivo (em formato PEM ou DER). Tal arquivo é o certificado propriamente dito, assinado por uma Autoridade Certificadora. O script irá gerar os certificados nos dois formatos, portanto não se preocupe muito com isto.

Você deverá verificar qual o formato de certificado que a aplicação está aguardando, se binário (DER) ou base64 (PEM). Copie o respectivo arquivo e faça a importação na sua aplicação.

Lembrando também que você precisará instalar na sua aplicação todos os certificados da cadeia que você criou.

Digite os comandos:

# cd /opt/openssl_certs
# ./Criar_Certificados.sh


A seguinte tela será exibida:

Script para criação de ACs e Certificados de Usuários

Lembrete: A senha das chaves privadas fica gravada no arquivo ./pass e é 'linux'

Escolha a opção desejada:
  1. Para criar Nova Cadeia de AC
  2. Para Certificados de Usuários
  3. Para atualizar uma LCR
  4. Para revogar um certificado
  5. Mostrar as Cadeias existentes

Digite: 2 <Enter>

Informe o nome do diretório da AC que emitirá o certificado:

Digite: AC_TESTE

**** Assinatura do certificado de USUÁRIO ****

Escolha a opção desejada:
  1. Para Criar Requisição e chaves
  2. Para Importar Requisição PKCS#10

Digite: 2 <Enter>

Informe o caminho da requisição PKCS#10

Digite o caminho do arquivo que contém a requisição. Por exemplo:

/media/floppy/APLICACAO.p10 <Enter>

Você precisa informar o formato da requisição. Para verificar o formato do arquivo, tente abrí-lo com um editor de texto. Caso ele seja iniciado por -----BEGIN CERTIFICATE REQUEST-----, significa que o seu formato é PEM. Caso o editor de texto exiba vários caracteres de formatação, significa que ele está em formato DER (binário).

Informe o FORMATO da requisição (PEM / DER):

Digite o formato verificado e pressione <Enter>.

O programa mostrará algumas mensagens referentes à assinatura do certificado e em seguida exibirá a mensagem:

ARQUIVOS GERADOS:

Requisição PKCS#10: ./ACs/AC_TESTE/newcerts/USER_08.pem
Certificado de Usuário:
   Em formato PEM(base64): ./ACs/AC_TESTE/certs/USER_08.pem.cer
   Em formato DER(binário): ./ACs/AC_TESTE/certs/USER_08.der.cer

Pronto, pegue esses arquivos .cer exibidos acima e faça a importação na sua aplicação ou website.

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

Enviando mensagens de WhatsApp no Linux usando Shell Script e ADB

cal2svg - brincando com shell script e arquivos vetoriais SVG

Shell script com PHP

Script com muitas utilidades para arquivos e pastas

Monitoramento de pops para provedores

  
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