• Nenhum resultado encontrado

Código 5.12–Exemplo de criação de nova CA

4.2 Especificação da mPKI

5.2.2 Instanciação da arquitetura

5.2.4.9 Cadeia de certificação

• URL: /pki/api/v1.0/certificates/<oid>/chain • Método: GET

• Parâmetos: <oid>

Este método permite obter a cadeia de certificação para qualquer certificado de id igual ao parâmetro <oid>, caso exista, no formato PEM, de acordo com a RFC 2585 (57).

Código 5.9 – Exemplo de cadeia de certificação

$ curl -v -X GET -k https :// localhost :5000/ pki/api/v1 .0/ certificates /3/ chain

> GET /pki/api/v1 .0/ certificates /3/ chain HTTP /1.1 > User - Agent : curl /7.32.0

> Host : localhost :5000 > Accept : */*

>

< HTTP /1.0 200 OK

< Content - Disposition : attachment ; filename =" chain .pem "; < Content - Type : application /x-pem - file

< Content - Length : 1216

< Server : Werkzeug /0.9.4 Python /2.7.5+ < Date : Tue , 05 Aug 2014 05:02:54 GMT < --- BEGIN CERTIFICATE --- MIIDVDCCAr2gAwIBAgIBATANBgkqhkiG9w0BAQUFADCBujELMAkGA1UEBhMCQ lIxEzARBgNVBAgMClBlcm5hbWJ1Y28xDzANBgNVBAcMBlJlY2lmZTEUMBIGA1 UECgwLVUZQRSAtIEdQUlQxDDAKBgNVBAsMA1BLSTE / MD0GA1UEAww2UHVibGl jLWtleSBJbmZyYXN0cnVjdHVyZSBSb290IENlcnRpZmljYXRpb24gQXV0aG9y aXR5MSAwHgYJKoZIhvcNAQkBFhF0YXZsQGdwcnQudWZwZS5icjAgFw0xNDAzM TgyMTE1MTNaGA8zMDEzMDcxOTIxMTUxM1owgboxCzAJBgNVBAYTAkJSMRMwEQ YDVQQIDApQZXJuYW1idWNvMQ8wDQYDVQQHDAZSZWNpZmUxFDASBgNVBAoMC1V GUEUgLSBHUFJUMQwwCgYDVQQLDANQS0kxPzA9BgNVBAMMNlB1YmxpYy1rZXkg SW5mcmFzdHJ1Y3R1cmUgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEgM B4GCSqGSIb3DQEJARYRdGF2bEBncHJ0LnVmcGUuYnIwgZ8wDQYJKoZIhvcNAQ EBBQADgY0AMIGJAoGBAJgOmV4B8aTunHymLVxzohNzwGy2sQ2IajzfnReMiyq CEr9 / lQrk6cFsbue4Z2sNoniCqQ96ouA6QcbEZCZCM5ZEsyZYdNc9K4lKzBF / P0k42Ld38 + jhZLFxk38zM0FMp6cJdhUFZ2WojQGAZ2bOL8OOQuaIvDFIwlDPF WTsunFJAgMBAAGjZjBkMB0GA1UdDgQWBBR5VO0JXya7YaVVoka0dJGj / EUYxj AfBgNVHSMEGDAWgBR5VO0JXya7YaVVoka0dJGj / EUYxjASBgNVHRMBAf8ECDA GAQH / AgEBMA4GA1UdDwEB / wQEAwIBBjANBgkqhkiG9w0BAQUFAAOBgQALmgyD x6BilQsciHxnVAjRVXRma0RaX2xlLwudvFf5bUoSc9z2HI8obxFEOA /R4L/dq rr5E2APH4N9S3L6DwP6CXD + BTovPdn3MzTu5lnW4FOjkEabUQsh3i9dFIBwmq erncdA4vVyaa2jGcFVInQ0uSmmAj +5 OzaU + jO44O85 /w==

5.2.4.10 Certificados descendentes

• URL: /pki/api/v1.0/certificates/<oid>/children • Método: GET

• Parâmetos: <oid>

Este método lista todos os certificados assinados pela CA de id igual ao parâmetro <oid>, caso exista e seja, de fato, uma CA.

Código 5.10 – Exemplo de certificados descendentes

$ curl -v --key admin .key --cert admin .pem -X GET -k https :// localhost :5000/ pki/api/v1 .0/ certificates /1/ children

> GET /pki/api/v1 .0/ certificates /1/ children HTTP /1.1 > User - Agent : curl /7.32.0

> Host : localhost :5000 > Accept : */*

>

< HTTP /1.0 200 OK

< Content - Type : application / json < Content - Length : 2484

< Server : Werkzeug /0.9.4 Python /2.7.5+ < Date : Tue , 05 Aug 2014 05:06:07 GMT < { "msg ": " success ", " status ": "OK", " payload ": [ { "ca ": false , "id ": 2, " issuer ": 1, " not_after ": "20150805040406 Z", "sn ": 1,

" subject ": "/C=BR/ST= Pernambuco /L= Recife /O= UFPE - GPRT /OU= PKI/CN= newserver . localhost / emailAddress = testing -

server@gprt . ufpe .br" }, { "ca ": false , "id ": 3, " issuer ": 1, " not_after ": "20150805040407 Z", "sn ": 2,

" subject ": "/C=BR/ST= Pernambuco /L= Recife /O= UFPE - GPRT /OU= PKI/CN= newserver . localhost / emailAddress = testing -

server@gprt . ufpe .br" },

... ] }

5.2.4.11 Assinatura de certificado

• URL: /pki/api/v1.0/certificates/<oid>/sign • Método: POST

• Parâmetos: Payload JSON

Este método possibilita a assinatura de um CSR, pela CA de id igual ao parâmetro <oid>, caso exista e seja, de fato, uma CA. Tanto os dados do CSR quanto a validade e o tipo de perfil a ser utilizado na assinatura desta requisição devem ser passados em uma estrutura JSON apropriada, na forma “{"csr": "DADOS_DO_CERTIFICADO", "days": "TEMPO_DE_VALIDADE", "ext": "PERFIL_DE_USO"}”.

Código 5.11 – Exemplo de assinatura de certificado

TEST_CSR_DATA =‘sed ’:a;N;$!ba;s/\n /\\\\ n/g’ server .csr ‘ curl -v -- key admin .key --cert admin .pem -X POST -k https :// localhost :5000/ pki/api/v1 .0/ certificates /1/ sign -H " Content - Type : application / json " -d "{\" csr \": \"${ TEST_CSR_DATA }\\n\", \" days \": \"365\" , \" ext \": \" identity \"}"

> POST /pki/api/v1 .0/ certificates /1/ sign HTTP /1.1 > User - Agent : curl /7.32.0

> Host : localhost :5000 > Accept : */*

> Content - Type : application / json > Content - Length : 787

>

< HTTP /1.0 200 OK

< Content - Type : application /x-pem - file < Content - Length : 1180

< Server : Werkzeug /0.9.4 Python /2.7.5+ < Date : Tue , 05 Aug 2014 05:10:39 GMT < --- BEGIN CERTIFICATE --- MIIDOjCCAqMCAQEwDQYJKoZIhvcNAQEFBQAwADAeFw0xNDA4MDUwNTEwMzhaF w0xNTA4MDUwNTEwMzhaMIGhMQswCQYDVQQGEwJCUjETMBEGA1UECAwKUGVybm FtYnVjbzEPMA0GA1UEBwwGUmVjaWZlMRQwEgYDVQQKDAtVRlBFIC0gR1BSVDE MMAoGA1UECwwDUEtJMRwwGgYDVQQDDBNuZXdzZXJ2ZXIubG9jYWxob3N0MSow KAYJKoZIhvcNAQkBFht0ZXN0aW5nLXNlcnZlckBncHJ0LnVmcGUuYnIwgZ8wD QYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANeyeeky6t5VHNP2pEYr8Y2oplnYgs 8 jkFlUg8n3XvrFTOOTAPOYFbOXePi2 / Oubmghu7vGYNe2Khwlq4VD6mIgVedy / LKLdMa3mh4cmKLHV8k1s5jZjMWKC6bvLjoBW71 + widhI3GBIsGJMzDv + XGOT HwkqXQHmf5gRKtk1ElyhAgMBAAGjggElMIIBITAJBgNVHRMEAjAAMA4GA1UdD wEB/ wQEAwIHgDApBgNVHSUEIjAgBggrBgEFBQcDBAYIKwYBBQUHAwIGCisGAQ QBgjcUAgIwHQYDVR0OBBYEFOfeyB41kTJ14wdEG5HWePKzcutMMB8GA1UdIwQ YMBaAFHlU7QlfJrthpVWiRrR0kaP8RRjGMFEGCCsGAQUFBwEBBEUwQzBBBggr BgEFBQcwAoY1aHR0cDovL2xvY2FsaG9zdDo1MDAwL3BraS9hcGkvdjEuMC9jZ XJ0aWZpY2F0ZXMvMS9yYXcwRgYDVR0fBD8wPTA7oDmgN4Y1aHR0cDovL2xvY2 FsaG9zdDo1MDAwL3BraS9hcGkvdjEuMC9jZXJ0aWZpY2F0ZXMvMS9jcmwwDQY JKoZIhvcNAQEFBQADgYEACQOm7lQA / ikVR / hK8A67IcUOkehr9BwM0GPuiqDH OqwwB9QCxGzwOI8GXsErOz2kk +GF /+4 ZTU4sF75H9myO7kX8DVzLzsvkLGDyZ

HlMB6P1sjprmjBV6KmqA + XSkRM / T1EJZdyY / LQ0N42ZjpGfksnrbo7zsqkhUj wENfZCxIw = ---END CERTIFICATE --- 5.2.4.12 Criação de nova CA • URL: /pki/api/v1.0/certificates/<oid>/newca • Método: POST

• Parâmetos: Payload JSON

Este método possibilita a criação de uma nova CA, subordinada à CA de id igual ao parâmetro <oid>, caso exista e seja, de fato, uma CA. Todos os dados necessários à construção e posterior assinatura de um CSR para esta nova CA, do lado do servidor da mPKI, incluindo o perfil da nova CA e sua validade, devem ser passados em uma estrutura JSON apropriada, na forma “{"c": "COUNTRY", "st": "STATE", "l": "LOCATION", "o": "ORGANIZATION", "ou": "ORGANIZATION UNIT", "cn": "COMMON NAME", "email": "E-MAIL_DO_RESPONSAVEL", "days": "TEMPO_DE_VALIDADE", "ext": "PERFIL_DA_CA"}”.

Código 5.12 – Exemplo de criação de nova CA

curl -v --key admin .key --cert admin .pem -X POST -k https :// localhost :5000/ pki/api/v1 .0/ certificates /1/ newca -H " Content - Type : application / json " -d "{\" c\": \" BR\", \" st \": \"

Pernambuco \", \"l\": \" Recife \", \"o\": \" UFPE \", \" ou \": \" CIn \", \" cn \": \" Autoridade Certificadora de Alunos do Centro de Informatica \", \" email \": \" castudent@cin . ufpe .br\", \" days \": \"2920\" , \" ext \": \" signing_ca \"}"

> POST /pki/api/v1 .0/ certificates /1/ newca HTTP /1.1 > User - Agent : curl /7.32.0

> Host : localhost :5000 > Accept : */*

> Content - Type : application / json > Content - Length : 244

>

< HTTP /1.0 200 OK

< Content - Type : application /x-pem - file < Content - Length : 1180

< Server : Werkzeug /0.9.4 Python /2.7.5+ < Date : Tue , 05 Aug 2014 05:11:02 GMT < --- BEGIN CERTIFICATE --- YDVQQIDApQZXJuYW1idWNvMQ8wDQYDVQQHDAZSZWNpZmUxFDASBgNVBAoMC1V GUEUgLSBHUFJUMQwwCgYDVQQLDANQS0kxPzA9BgNVBAMMNlB1YmxpYy1rZXkg SW5mcmFzdHJ1Y3R1cmUgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEgM B4GCSqGSIb3DQEJARYRdGF2bEBncHJ0LnVmcGUuYnIwgZ8wDQYJKoZIhvcNAQ EBBQADgY0AMIGJAoGBAJgOmV4B8aTunHymLVxzohNzwGy2sQ2IajzfnReMiyq QYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANeyeeky6t5VHNP2pEYr8Y2oplnYgs FtYnVjbzEPMA0GA1UEBwwGUmVjaWZlMRQwEgYDVQQKDAtVRlBFIC0gR1BSVDE

MMAoGA1UECwwDUEtJMRwwGgYDVQQDDBNuZXdzZXJ2ZXIubG9jYWxob3N0MSow KAYJKoZIhvcNAQkBFht0ZXN0aW5nLXNlcnZlckBncHJ0LnVmcGUuYnIwgZ8wD QYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANeyeeky6t5VHNP2pEYr8Y2oplnYgs 8 jkFlUg8n3XvrFTOOTAPOYFbOXePi2 / Oubmghu7vGYNe2Khwlq4VD6mIgVedy / LKLdMa3mh4cmKLHV8k1s5jZjMWKC6bvLjoBW71 + widhI3GBIsGJMzDv + XGOT BgEFBQcwAoY1aHR0cDovL2xvY2FsaG9zdDo1MDAwL3BraS9hcGkvdjEuMC9jZ XJ0aWZpY2F0ZXMvMS9yYXcwRgYDVR0fBD8wPTA7oDmgN4Y1aHR0cDovL2xvY2 FsaG9zdDo1MDAwL3BraS9hcGkvdjEuMC9jZXJ0aWZpY2F0ZXMvMS9jcmwwDQY TgyMTE1MTNaGA8zMDEzMDcxOTIxMTUxM1owgboxCzAJBgNVBAYTAkJSMRMwEQ YDVQQIDApQZXJuYW1idWNvMQ8wDQYDVQQHDAZSZWNpZmUxFDASBgNVBAoMC1V GUEUgLSBHUFJUMQwwCgYDVQQLDANQS0kxPzA9BgNVBAMMNlB1YmxpYy1rZXkg AHGneDkpo = ---END CERTIFICATE ---

5.2.5 Ferramenta administrativa

A ferramenta de administração foi desenvolvida em Java, utilizando o JavaFX como biblioteca gráfica. Por se tratar de uma biblioteca gráfica nativa do Java e distribuida pela própria Oracle, não é necessário instalar qualquer biblioteca ou ferramenta adicional. Desta forma, a aplicação é compatível com qualquer plataforma capaz de executar a Java Virtual Machine 7, desde que possua suporte ao JavaFX.

5.2.5.1 Login

Na tela inicial da ferramenta de adminstração, é possível selecionar a origem do certificado que será utilizado na autenticação TLS mútua, que pode vir de um arquivo em disco (PKCS#12) ou de um smartcard. Se a mídia selecionada for um smartcard, é solicitado o PIN. Já no caso do usuário selecionar um arquivo, é solicitada também a senha para carregar o certificado, como pode ser visto na Figura 7.

Figura 7 – Login

O processo de validação do certificado do usuário envolve estabelecer, com sucesso, uma conexão com o servidor. Para isso, a ferramenta tenta consumir o endpoint de login através de uma conexão com autenticação mútua, utilizando TLS. Se o certificado apresentado pelo usuário for aceito pelo servidor, a conexão é estabelecida e a ferramenta recebe uma resposta de “ok” padrão. Caso contrário, o servidor retorna uma mensagem

HTTP 403 (Forbidden) e o usuário é notificado. Mais detalhes sobre os critérios para que o servidor aceite um certificado serão vistos na Seção 5.2.6.1.

Uma vez estabelecida a conexão inicial, o certificado é mantido carregado em memória para que possa ser utilizado em todas as comunicações subsequentes.

5.2.5.2 Base de certificados

É possível listar todos os certificados, válidos ou inválidos, armazenados na PKI. Esta tela da ferramenta exibe diversas informações relevantes sobre os certificados, como o DN, data de validade, etc, como mostra a Figura 8. As abas, no topo da tela, restringem a lista aos certificados válidos ou inválidos, respectivamente. Em ambos os casos, é possível filtrar ainda mais a lista, exibindo apenas os certificados de CAs ou os “non-CA”.

Figura 8 – Certificados válidos

Ao selecionar um certificado válido, várias ações ficam disponíveis, como baixar o certificado, revogá-lo ou mesmo baixar toda sua cadeia de certificação. No caso dos certificados inválidos, é possível baixar a CRL da que contém as informações sobre a revogação do certificado selecionado.

Documentos relacionados