получить выданный сертификат из CSR - PullRequest
0 голосов
/ 06 июня 2018

В контексте центра сертификации я пытаюсь получить действительный действующий сертификат (если таковой имеется) из CA index.txt, чтобы отозвать его до возобновления его из исходного CSR.

В моей index.txt строке, которую я ищу, есть

V       200605120159Z           D486D9E32C4DE4BA        unknown /C=LU/ST=Luxembourg/L=Luxembourg/O=My Org/OU=My Unit/CN=myhost.fqdn/emailAddress=ca@initech.com

Я могу получить субъект в CSR с помощью

openssl req -noout -subject -in sub/csr/myhost.csr.pem

, который получает

subject=C = LU, ST = Luxembourg, L = Luxembourg, O = My Org, OU = My Unit, emailAddress = ca@initech.com, CN = myhost.fqdn

Я могу перевести его с помощью sed

openssl req -noout -subject -in sub/csr/myhost.csr.pem \
| sed -e 's/subject=/\//' -e 's/ = /=/g' -e 's/, /\//g'

Но результат

/C=LU/ST=Luxembourg/L=Luxembourg/O=My Org/OU=My Unit/emailAddress=ca@initech.com/CN=myhost.fqdn

не соответствует строке в index.txt, так как поля расположены не в том же порядке.

Можно ли сопоставить субъект сертификата и CSR?

1 Ответ

0 голосов
/ 06 июня 2018

Если вы хотите исправить порядок полей в CSR, вы можете попробовать использовать awk:

openssl req -noout -subject -in sub/csr/myhost.csr.pem  | awk -F', ' -v OFS='/' '{sub(/^subject=/,"");gsub(" = ","=");print $1,$2,$4,$5,$7,$6}'

-F', ' устанавливает разделитель входных полей и -v OFS='/' устанавливает разделитель выходных полей.

Первая команда sub удаляет строку subject=, а вторая команда gsub сжимает пробелы вокруг символа =.

Затем строка печатается.Обратите внимание на инверсию 6-го и 7-го полей.


Но лучше исправить порядок полей темы в соответствии с файлом конфигурации openssl openssl.cnf (часто находится в /etc/ssl или /usr/ssl) в разделе [ req_distinguished_name ].

...