2013-06-05 2 views
4

Есть ли у кого-нибудь удобный скрипт для создания сертификатов SSL, чтобы он выдавал сертификат ЦС и сертификат сервера. Что еще более важно, создайте его таким образом, чтобы я мог импортировать сертификат CA в свой доверенный корневой список (из моей системы Windows), чтобы браузер не отмечал сайт как ненадежный.Я хотел бы создать SSL-сертификаты для своей тестовой среды

Для этого я использовал следующий скрипт, но я не могу убедить мой браузер доверять сертификату. Буду признателен за любую помощь здесь.

# Generate a private key 
openssl genrsa -des3 -out server.key 1024 

# Generate a CSR (Certificate Signing Request) 
openssl req -new -key server.key -out server.csr 

# Remove Passphrase from Key 
cp server.key server.key.org 
openssl rsa -in server.key.org -out server.key 

# Generating a Self-Signed Certificate 
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt 

С уважением, Kashyap

+0

Какой браузер вы используете? IE и Chrome используют список доверенных сертификатов Windows, но Firefox имеет свой собственный список доверенных сертификатов. – gtrig

ответ

0

У вас есть сертификат доверенного центра сертификации? Вы создаете самозаверяющий сертификат, который всегда считается ненадежным браузерами.

+0

Хм ... это может объяснить это - браузеры отмечают «самозаверяющие» сертификаты как ненадежные. Итак, есть ли способ, чтобы люди могли проводить тестирование без необходимости покупать сертификат? – Kashyap

+0

Это не совсем так. Если вы добавите самозаверяющий сертификат в список доверенных сертификатов Windows, то браузеры, которые смотрят на этот доверенный список, также будут доверять этому сертификату и сертификату, подписанному сертификатом. – gtrig

+0

@ Kashyap для тестирования, так как gtrig говорит, что вы можете добавить сертификат в список доверенных сертификатов Windows после того, как этот IE рассмотрит ваш сертификат как надежный, но не уверен в Chrome, в firefox вы можете добавить его в качестве исключения. –

6

Ваш скрипт генерирует только один сертификат, самозаверяющий сертификат. Обычно самозаверяющий сертификат называется Root-сертификатом. Это может использоваться как сертификат ЦС, но часто промежуточный сертификат CA создается и подписывается секретным ключом Root. Этот промежуточный сертификат CA затем используется для подписания сертификатов Сервера. Таким образом, у вас есть эта иерархия:

Root -> CA -> Сервер

СА и Root Cert может войти в список доверенных сертификатов. Тогда браузер, который доверяет этому списку, также будет доверять любому сертификату, подписанному сущностями CA или Root.

Вам не обязательно иметь эту иерархию ... вы можете использовать Root-сертификат как CA и пропустить средний сертификат. Вы также можете использовать только один самозаверяющий сертификат в качестве сертификата Root/Server. См. Это article (Trusting self-signed certificates).

Но если вы имеете эту иерархию, вот некоторые OpenSSL команды для создания необходимых ключей и сертификатов:

# 1. Create Root private key 
openssl genrsa -out root.key 2048 

# 2. Create self-signed Root certificate 
openssl req -new -key root.key -x509 -out root.crt -days 5000 -sha256 

# 3. Create CA private key 
openssl genrsa -out ca.key 2048 

# 4. Create CA CSR 
openssl req -new -key ca.key -out ca.csr -days 5000 

# 5. Sign and create CA certificate 
openssl x509 -req -in ca.csr -CA root.crt -CAkey root.key -out ca.crt -set_serial 2 -days 5000 -sha256 

# 6. Create Server private key 
openssl genrsa -out server.key 2048 

# 7. Create Server CSR 
openssl req -new -key server.key -out server.csr -days 5000 

# 8. Sign and create Server certificate 
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -out server.crt -set_serial 3 -days 5000 -sha256 

Изменить ключевые биты, # действительных дней, серийные номера, а также добавлять расширения V3, как вы считаете нужным.

Также помните, что разные браузеры имеют разные списки, которым они доверяют. Chrome и IE используют список Windows по умолчанию. У Firefox есть свой собственный список.

+0

Большое спасибо за подробный сценарий. Я просто должен был обеспечить еще одну вещь .... упомянуть «localhost» в FQDN, и все получилось гладко !!!! – Kashyap

Смежные вопросы