Проблемы с командной строкой Openssl - PullRequest
5 голосов
/ 13 января 2009

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

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

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

$ 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, так что я могу упустить что-то глупое (уверен, если так, хаха).

1 Ответ

6 голосов
/ 14 января 2009

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

$ ./CA.sh -newca

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

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

$ ./CA.sh -newreq

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

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

$ ./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:

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

...