Existe uma maneira de alterar o formato de string para um campo CSR “Country Code” existente de UTF8 para Printable String?

1

CentOS 5.x

A versão curta:

Existe uma maneira de alterar o formato de codificação para um campo existente CSR "Country Code" de UTF8 para Printable String?

A versão longa:

Eu tenho um CSR gerado a partir de um produto usando provedores de segurança java padrão (jsse / jce). Algumas das informações no CSR usam o UTF8 Strings (que eu entendo como o requisito de codificação preferencial em 31 de dezembro de 2003 - RF 3280).

A autoridade de certificação para a qual estou enviando o CSR exige explicitamente que o código de país seja especificado como PrintableString. Meu CSR tem listado como uma string UTF8.

Voltei para o mais recente RFC - link . Parece entrar em conflito especificamente no countryName. Aqui é onde fica um pouco confuso ...

O countryName faz parte do DN relativo. O DN relativo é definido para ser do tipo DirectoryString, que é definido como uma opção de teletexString, printableString, universalString, utf8String ou bmpString. Também define mais especificamente countryName como sendo alfa (limite superior de 2 bytes) ou numérico (limite superior de 3 bytes). Além disso, no apêndice, refere-se ao X520countryName, que é limitado a ser apenas uma PrintableString de tamanho 2.

Então, fica claro por que isso não funciona. Parece que a autoridade de certificação e a Sun / Java não concordam com a interpretação dos requisitos para o countryName. Existe alguma coisa que eu possa fazer para modificar o CSR para ser compatível com o CA?

    
por Mike B 29.08.2012 / 22:16

1 resposta

1

Descobri isso. Aqui estão os passos básicos:

1) Abra o CSR original e copie os dados da base64 entre os marcadores “——- BEGIN CERTIFICATE REQUEST --—-” e “—- END PEDIDO DE CERTIFICADO ——-”.

2) Coloque esses dados em um decodificador base64 e salve a saída como um arquivo binário. Há uma variedade de serviços on-line que podem fazer isso ou, se preferir, também existem ferramentas locais.

3) Baixe / instale um editor hexadecimal. Use-o para abrir o arquivo binário decodificado.

4) Procure por dois valores antes do nome do país:

0C
02

5) Edite o valor 0C (UTF8String) e altere-o para 13 (Printablestring)

6) Salve as alterações e use um codificador de base64 para codificá-lo de volta para a base64.

7) Adicione os dados de base64 de volta entre os marcadores “——— BEGIN CERTIFICATE REQUEST ——-” e “—- END REQUEST CERTIFICADO ——-”.

    
por 30.08.2012 / 07:41