Estou testando a funcionalidade de revogação de certificado de um dispositivo CMTS. Isso requer que eu configure um respondedor de OCSP. Como ele será usado apenas para teste, presumo que a implementação mínima fornecida pelo OpenSSL seja suficiente.
Eu extraí o certificado de um modem a cabo, copiei para o meu PC e o converti para o formato PEM. Agora, quero registrá-lo no banco de dados OpenSSL OCSP e iniciar um servidor.
Concluí todas essas etapas, mas quando solicito um cliente, meu servidor responde invariavelmente com "desconhecido". Parece desconhecer completamente a existência do meu certificado.
Eu apreciaria muito se alguém estivesse disposto a dar uma olhada no meu código. Para sua conveniência, criei um único script que consiste em uma lista seqüencial de todos os comandos usados, desde a configuração da CA até a inicialização do servidor: http://code.google.com/p/stacked-crooked/source/browse/ trunk / Misc / OpenSSL / AllCommands.sh
Você também pode encontrar o arquivo de configuração personalizado e o certificado com o qual estou testando: http://code.google.com/p/stacked-crooked/source/browse/trunk/Misc/OpenSSL/
Qualquer ajuda seria muito apreciada.
Respostas:
Caso você esteja interessado: aqui está a minha solução.
Primeiro, abandonei o respondedor de OCSP do OpenSSL. Não pode ser usado para certificados que não foram criados com sua CA autoassinada.
Em seguida, usei as bibliotecas OpenCA para criar um utilitário de linha de comando capaz de criar uma resposta OCSP a partir de uma solicitação OSCP. Funciona inteiramente com base em arquivo: você o executa com uma solicitação OSCP formatada em DER como arquivo de entrada e gera um arquivo de resposta OCSP formatado em DER.
Um segundo argumento para o utilitário de linha de comando é o status de revogação: bom, revogado ou desconhecido. O status do certificado no arquivo de resposta será o mesmo que o argumento passado. O código é baseado nessa amostra , indicou-me pelo Rook em este post .
A etapa final foi criar um servidor HTTP baseado no utilitário de linha de comando. Eu usei o framework Ruby Merb para isso. Um recurso bacana é que o status de revogação pode ser solicitado como um URL HTTP, por exemplo: http://127.0.0.1:5000/good .
Atualizar
Como os links acima estão quebrados, postarei o conteúdo do script aqui:
AllCommands.sh:
openssl.cnf:
thirdparty.pem:
O utilitário de linha de comando usando bibliotecas OpenCA está escrito em C:
fonte