Вот такая ситуация: у меня есть защищенный сервер, но я хочу предоставить доступ только тем, у кого есть определенные файлы сертификатов. Я уже настроил apache (см. Как предоставить HTTPS-доступ к веб-серверу, который не поддерживает SSL?). Я хочу знать, как создавать разные сертификаты, которые будут проверять мой собственный ЦС.
Кроме того, могу ли я импортировать эти файлы сертификатов в браузер, например Firefox / Chromium?
(Конечно, я хочу, чтобы все это было с помощью openssl)
РЕДАКТИРОВАТЬ: часть httpd.conf
httpd.conf
# require a client certificate which has to be directly
# signed by our CA certificate in ca.crt
SSLVerifyClient require
SSLVerifyDepth 1
SSLCACertificateFile conf/ssl.crt/ca.crt
Если я правильно понимаю вопрос, вы хотите, чтобы материал easy-rsa был включен в большинство дистрибутивов openssl. В основном вам нужно создать часть CA (похоже, вы это уже сделали, но вы можете переделать ее в соответствии с этими документами), затем создать сертификаты клиентов и подписать их сертификатом CA (включенные скрипты позаботятся обо всем этом). Вы можете получить дополнительную информацию здесь:
http://openvpn.net/index.php/open-source/documentation/miscellaneous/77-rsa-key-management.html
Или найдите каталог easy-rsa для вашей установки openssl, он должен выглядеть так:
# cd /usr/share/doc/openvpn-2.0.9/easy-rsa/;ls
2.0 build-dh build-key build-key-pkcs12 build-req clean-all make-crl README revoke-full vars
build-ca build-inter build-key-pass build-key-server build-req-pass list-crl openssl.cnf revoke-crt sign-req Windows
Выполните инструкции в README, затем используйте ./build-key для создания клиентских сертификатов. Как вы упомянули, вам нужно будет установить ca.crt на своих клиентах. Я считаю, что Chrome будет использовать систему openssl, если хотите, я думаю, что firefox должен установить сертификат в свое собственное хранилище ключей (по моему опыту).
Я использую этот псевдоним сейчас для создания клиентских ключей, чтобы они были подписаны центром сертификации, прежде чем я отправлю сертификат пользователю:
build_key is a function
build_key ()
{
cd /usr/share/doc/openvpn-2.0.9/easy-rsa/;
echo "key name?";
read answer;
./build-key $answer
}