Проблемы с командной строкой Openssl

Редактировать: не решил свои проблемы, но я перешел к новым и более интересным проблемам.
Оставив это здесь на случай, если у кого-то есть, и проницательно, это поможет тому, кто наткнется на этот вопрос в будущем.

Привет, я пытаюсь отправить зашифрованное электронное письмо с php на Outlook. Таким образом, мне нужно создать сертификат для импорта в Outlook. У меня не было проблем с созданием набора ключей с помощью openssl и прилагаемого к нему сценария CA.pl, но когда я пытаюсь запустить команду для создания файла PKCS12 для импорта в Outlook, он жалуется на отсутствие каталога «demoCA». Похоже, что этот каталог является частью openssl и упоминается в конфигурации openssl... но я понятия не имею, где он находится. Я искал диск по-разному, от grep до прожектора (на os x, хотя я действительно не ожидал, что прожектор что-нибудь найдет) и ничего не могу придумать.

Команда, которую я пытался запустить:

$ openssl ca -cert newcert.pem -ss_cert newcert.pem
Using configuration from /sw/etc/ssl/openssl.cnf
./demoCA/private/cakey.pem: No such file or directory trying to load CA private key
19918:error:02001002:system library:fopen:No such file or directory:bss_file.c:245:fopen('./demoCA/private/cakey.pem','r')
19918:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:247:

Я немного нуб, когда дело доходит до шифрования/SSL, поэтому я могу упустить что-то глупое (я уверен, что это так, ха-ха).


person Community    schedule 13.01.2009    source источник


Ответы (1)


Вы должны создать новый ЦС с помощью предоставленного сценария, что проще, чем просто обрабатывать все параметры openssl. Вы можете сделать это с помощью openssl в комплекте с Cygwin внутри самой Windows или использовать свой любимый дистрибутив Unix. Я покажу вам, как это сделать с помощью скриптов bash (но скрипты perl должны быть такими же).

$ ./CA.sh -newca

Это создает каталог demoCA с сертификатом CA внутри него. При вызове вышеуказанной команды вам будет предложено указать поля сертификата ЦС (CN, OU и т. д.) и фразу-пароль закрытого ключа ЦС.

Теперь вы можете создавать запросы сертификатов или сертификаты из запросов сертификатов.

$ ./CA.sh -newreq

Это запрашивает новые поля запроса сертификата и парольную фразу для шифрования сгенерированного закрытого ключа. По умолчанию запрос остается в том же каталоге, что и CA.sh (newreq.pem). Важно, чтобы вы использовали в качестве CN (общее имя) адрес электронной почты, который у вас есть.

Теперь вам нужно только подписать его, и у вас есть полноценный сертификат.

$ ./CA.sh -sign

Это сгенерирует newcert.pem, который является подписанным запросом сертификата. У вас есть сертификат, вам нужно только упаковать сертификат и закрытый ключ в файл PFX или P12, который распознает Microsoft CSP.

Затем скопируйте содержимое файлов newreq.pem и newcert.pem в файл.

$ cat newreq.pem > keypair.pem
$ cat newcert.pem >> keypair.pem

А теперь сгенерируйте файл P12 с помощью оболочки openssl (на этот раз у нас нет помощи какого-либо скрипта). Вам будет предложено ввести парольную фразу, которую вы использовали при создании запроса, а затем пароль экспорта (для шифрования закрытого ключа внутри файла p12).

$ openssl pkcs12 -export -in keypair.pem  -out mykeypair.p12
Enter pass phrase for keypair.pem:
Enter Export Password:
Verifying - Enter Export Password:

И вуаля. У вас есть файл PKCS#12, который вы можете дважды щелкнуть в Windows, импортировать его в хранилище ключей и использовать в качестве сертификата подписи почты (я не помню, достаточно ли параметров по умолчанию или вам нужно указать некоторые дополнительные атрибуты при создании сертификат, поэтому Outlook распознает сертификат подписи электронной почты). Вам также потребуется импортировать сертификат ЦС в качестве доверенного ЦС (скопируйте cacert.pem в cacert.cer, который находится в каталоге demoCA, и дважды щелкните его для импорта).

person Fernando Miguélez    schedule 13.01.2009
comment
Спасибо за отличный ответ. Вы действительно обобщили всю случайную документацию в форме, которая объединила все это. Спасибо! К вашему сведению, кажется, что CA.pl/sh позволяет создавать файлы PKCS#12. CA.pl -pkcs12 [email protected] - person Electronic Zebra; 14.01.2009
comment
Может быть, моя версия openssl слишком старая :-) - person Fernando Miguélez; 15.01.2009
comment
Вау, отличный ответ, он тоже связан с тем, что я использую. Спасибо. - person Jeff Allen; 09.03.2009
comment
Однако здорово сэкономить время: $ cat newkey.pem › keypair.pem $ cat newcert.pem ›› keypair.pem - person sipsorcery; 14.03.2009
comment
Нет, это правильно, поскольку запрос содержит закрытый ключ, и вам также нужен только подписанный запрос (сертификат), чтобы пара ключей была действительной для файла PKCS # 12. - person Fernando Miguélez; 14.03.2009
comment
Хорошо, должно быть просто моя установка openssl. Я использую cygwin в Windows, и закрытый ключ отсутствует в файле запроса. В моем случае мне нужно указать закрытый ключ, иначе генерация p12 завершится ошибкой. - person sipsorcery; 14.03.2009