Pedido de assinatura de certificado

Em uma PKI (em Inglês Public Key Infrastructure ou Public Key Infrastructure ), um pedido de assinatura de certificado (CSR para Inglês Certificate Signing Request ) é uma mensagem enviada por um candidato a uma autoridade de certificação para solicitar um certificado de identidade digital . O formato mais comum para CSRs é a especificação PKCS # 10.

Procedimento

Antes de criar um CSR, o solicitante cria um par de chaves (uma pública e outra privada ) mantendo a chave privada em segredo. O CSR contém credenciais do solicitante (considerado como um nome distinto no caso de um certificado X.509) e a chave pública escolhida pelo solicitante. A chave privada correspondente não está incluída no CSR, mas é usada para assinar digitalmente a solicitação. O CSR pode ser acompanhado por outras informações de identificação ou prova de identidade exigida pelo CA, e o CA pode entrar em contato com o solicitante para obter mais informações.

Se a solicitação for aceita, o CA retorna um certificado de identidade assinado digitalmente com a chave privada do CA.

Aqui estão as informações normalmente presentes em um CSR:
Observação: as informações entre parênteses na coluna de informações, uma vez montadas, constituem o nome completo que será usado no certificado.

Em formação Descrição
Nome comum (CN =) O nome completo ( FQDN ) do domínio da Internet a ser protegido, por exemplo “www.wikipedia.org”.
Nome da empresa / organização (O =) Nome de uma empresa ou associação legalmente constituída.
Nome do departamento / unidade organizacional (OU =) Por exemplo, RH, finanças, TI
Localidade (L =) Por exemplo Paris, Londres
Província, região ou estado (ST =) Por exemplo, Normandia, Ile-de-France
País (C =) O código ISO de duas letras para o país onde a organização está localizada. Por exemplo FR, CA
Um endereço de e-mail Um endereço de e-mail para entrar em contato com a organização. Normalmente, o endereço de e-mail do administrador do certificado

Exemplo

Aqui está uma solicitação de certificado no formato PEM (o formato PEM é o resultado da codificação base64 do formato PKCS # 10 que está em ASN.1 ).

-----BEGIN CERTIFICATE REQUEST----- MIIBMzCB3gIBADB5MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEW MBQGA1UEBxMNU2FuIEZyYW5jaXNjbzEjMCEGA1UEChMaV2lraW1lZGlhIEZvdW5k YXRpb24sIEluYy4xGDAWBgNVBAMUDyoud2lraXBlZGlhLm9yZzBcMA0GCSqGSIb3 DQEBAQUAA0sAMEgCQQC+ogxM6T9HwhzBufBTxEFKYLhaiNRUw+8+KP8V4FTO9my7 5JklrwSpa4ympAMMpTyK9cY4HIaJOXZ21om85c0vAgMBAAGgADANBgkqhkiG9w0B AQUFAANBAAf4t0A3SQjEE4LLH1fpANv8tKV+Uz/i856ZH1KRMZZZ4Y/hmTu0iHgU 9XMnXQI0uwUgK/66Mv4gOM2NLtwx6kM= -----END CERTIFICATE REQUEST-----

O subcomando req de OpenSSL pode criar rapidamente esses arquivos, mas também para exibir o conteúdo:

$ openssl req -text -noout -in request.pem Certificate Request: Data: Version: 0 (0x0) Subject: C=US, ST=California, L=San Francisco, O=Wikimedia Foundation, Inc., CN=*.wikipedia.org Subject Public Key Info: Public Key Algorithm: rsaEncryption RSA Public Key: (512 bit) Modulus (512 bit): 00:be:a2:0c:4c:e9:3f:47:c2:1c:c1:b9:f0:53:c4: 41:4a:60:b8:5a:88:d4:54:c3:ef:3e:28:ff:15:e0: 54:ce:f6:6c:bb:e4:99:25:af:04:a9:6b:8c:a6:a4: 03:0c:a5:3c:8a:f5:c6:38:1c:86:89:39:76:76:d6: 89:bc:e5:cd:2f Exponent: 65537 (0x10001) Attributes: a0:00 Signature Algorithm: sha1WithRSAEncryption 07:f8:b7:40:37:49:08:c4:13:82:cb:1f:57:e9:00:db:fc:b4: a5:7e:53:3f:e2:f3:9e:99:1f:52:91:31:96:59:e1:8f:e1:99: 3b:b4:88:78:14:f5:73:27:5d:02:34:bb:05:20:2b:fe:ba:32: fe:20:38:cd:8d:2e:dc:31:ea:43

O subcomando asn1parse decodifica o formato ASN.1 do qual esta solicitação de certificado é composta (a opção -i permite o recuo da estrutura):

$ openssl asn1parse -i -in request.pem 0:d=0 hl=4 l= 307 cons: SEQUENCE 4:d=1 hl=3 l= 222 cons: SEQUENCE 7:d=2 hl=2 l= 1 prim: INTEGER :00 10:d=2 hl=2 l= 121 cons: SEQUENCE 12:d=3 hl=2 l= 11 cons: SET 14:d=4 hl=2 l= 9 cons: SEQUENCE 16:d=5 hl=2 l= 3 prim: OBJECT :countryName 21:d=5 hl=2 l= 2 prim: PRINTABLESTRING :US 25:d=3 hl=2 l= 19 cons: SET 27:d=4 hl=2 l= 17 cons: SEQUENCE 29:d=5 hl=2 l= 3 prim: OBJECT :stateOrProvinceName 34:d=5 hl=2 l= 10 prim: PRINTABLESTRING :California 46:d=3 hl=2 l= 22 cons: SET 48:d=4 hl=2 l= 20 cons: SEQUENCE 50:d=5 hl=2 l= 3 prim: OBJECT :localityName 55:d=5 hl=2 l= 13 prim: PRINTABLESTRING :San Francisco 70:d=3 hl=2 l= 35 cons: SET 72:d=4 hl=2 l= 33 cons: SEQUENCE 74:d=5 hl=2 l= 3 prim: OBJECT :organizationName 79:d=5 hl=2 l= 26 prim: PRINTABLESTRING :Wikimedia Foundation, Inc. 107:d=3 hl=2 l= 24 cons: SET 109:d=4 hl=2 l= 22 cons: SEQUENCE 111:d=5 hl=2 l= 3 prim: OBJECT :commonName 116:d=5 hl=2 l= 15 prim: T61STRING  :*.wikipedia.org 133:d=2 hl=2 l= 92 cons: SEQUENCE 135:d=3 hl=2 l= 13 cons: SEQUENCE 137:d=4 hl=2 l= 9 prim: OBJECT :rsaEncryption 148:d=4 hl=2 l= 0 prim: NULL 150:d=3 hl=2 l= 75 prim: BIT STRING 227:d=2 hl=2 l= 0 cons: cont [ 0 ] 229:d=1 hl=2 l= 13 cons: SEQUENCE 231:d=2 hl=2 l= 9 prim: OBJECT :sha1WithRSAEncryption 242:d=2 hl=2 l= 0 prim: NULL 244:d=1 hl=2 l= 65 prim: BIT STRING

Notas e referências

Notas

  1. Este é o modo descentralizado, no modo centralizado, uma autoridade gera a chave privada de um usuário e a transmite de forma segura (por exemplo, em um arquivo no formato PKCS # 12 ).
  2. É possível proteger vários domínios graças ao uso do caractere curinga * como em "* .wikipedia.org" que inclui todos os idiomas da Wikipedia.

Referências

Apêndices

Artigos relacionados