Назад | Перейти на главную страницу

Как создать индивидуальные SSL-сертификаты с помощью моего собственного центра сертификации?

Вот такая ситуация: у меня есть защищенный сервер, но я хочу предоставить доступ только тем, у кого есть определенные файлы сертификатов. Я уже настроил 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
}