Создать сертификат открытого ключа только из открытого ключа - PullRequest
0 голосов
/ 11 марта 2019

Как я понимаю, сертификаты подписаны открытым ключом пользователя СА.

У меня нет CSR от пользователя, у меня есть только его открытый ключ, и я хочу его сертифицировать.

Как я могу сертифицировать этот открытый ключ с помощью OpenSSL (командная строка) или .net (с программированием на C #)?

РЕДАКТИРОВАТЬ: Точнее, мне нужно подписать открытый ключ пользователя с секретным ключом CA, затем создать текстовый файл X509 и каким-то образом преобразовать его в файл .PEM или .DER

1 Ответ

0 голосов
/ 11 марта 2019

Вы можете проверить, что сертификат правильно подписан с помощью openssl, но это зависит от формата сертификата. Если я «предполагаю», что сертификат имеет формат PEM . например,

openssl x509 -in cert.pem -noout -text

сбросит информацию, хранящуюся в сертификате. Если что-либо неверно, оно «изменится».

Вы можете проверить, не истек ли срок действия сертификата: openssl x509 -enddate -checkend 0 -noout -in cert.pem Будет отображаться дата окончания (в формате utc) и, если срок действия сертификата истек.

Вы также можете проверить правильность "цепочки" сертификатов с помощью команды verify openssl. например,

openssl verify cert.pem

хотя вам может потребоваться включить промежуточные сертификаты и Calist, если требуется. например Это пример проверки цепочки сертификатов, подписанных GoDady:

openssl verify -CAfile .\gdroot-g2.crt -untrusted .\gdig2.crt.pem -show_chain .\server.pem
.\server.pem: OK
Chain:
depth=0: OU = Domain Control Validated, CN = *.XXXX.XXX (untrusted)
depth=1: C = US, ST = Arizona, L = Scottsdale, O = "GoDaddy.com, Inc.", OU = http://certs.godaddy.com/repository/, CN = Go Daddy Secure Certificate Authority - G2 (untrusted)
depth=2: C = US, ST = Arizona, L = Scottsdale, O = "GoDaddy.com, Inc.", CN = Go Daddy Root Certificate Authority - G2

Большая часть этого делается для вас, когда вы устанавливаете соединение SslStream .

Что касается попыток сделать все это с помощью кода (например, C #), вам нужно быть более конкретным в отношении того, что вы хотите сделать. Если вы просто хотите узнать, может ли C # «загрузить» сертификат, вы можете использовать метод X509Certificate2Collection Import для импорта цепочки сертификатов в формате PFX.

После импорта вы можете извлечь любые атрибуты, которые хотите посмотреть.

Вы можете проверить цепочку, используя X509Certificate2 Verify mathod.

...