Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » В помощь системному администратору » Apache 2.x Win32 и SSL (https)

Модерирует : lynx, Crash_Master, dg, emx, ShriEkeR

 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

Открыть новую тему     Написать ответ в эту тему

WRFan



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Хочу поделится собственным опытом создания сертификата под WIN32  

 
и я тоже :smile: я вам сейчас объясню, как создавать сертификаты ssl для apache 2, IIS 5 и proxomitron-а (если вы его используете как прокси и для ssl страниц в браузере.
 
кстати, можете себе заказать и бесплатный сертификат на 14 дней у верисайна. я заказал на http://www.verisign.de/ (как создавать ключ для верисайна - смотри внизу) и он сразу на мыло пришёл. но конечно интереснее самому создать - на 365 дней, а не на 14.
 
значит, во первых, с целью похвастаться :wink: - вот картинка сертификатного окна, которое появляется в ИЕ при заходе на мои локальные серваки apache 2.2 и IIS 5:
 
   
 
во вторых, адреса бинерников:
 
apache 2.2 с ssl:
 
http://www.apachelounge.com/download/
 
на оффсайте только без ssl. а почему, не понял.
 
новейшая версия ssl  бинерников:
 
http://www.slproweb.com/products/Win32OpenSSL.html
 
а вот мой конфигурационный файл, подходящий для apache2 И IIS 5. сорри, он длинный. копировать в тхт файл openssl.cnf и в openssl\bin папочку. не забудьте адреса папок изменить!:
 

Код:
 
#  
# OpenSSL example configuration file.  
# This is mostly being used for generation of certificate requests.  
#  
 
# This definition stops the following lines choking if HOME isn't  
# defined.  
HOME         = .  
RANDFILE      = $ENV::HOME/.rnd  
 
# Extra OBJECT IDENTIFIER info:  
#oid_file      = $ENV::HOME/.oid  
oid_section      = new_oids  
 
# To use this configuration file with the "-extfile" option of the  
# "openssl x509" utility, name here the section containing the  
# X.509v3 extensions to use:  
# extensions      =  
# (Alternatively, use a configuration file that has only  
# X.509v3 extensions in its main [= default] section.)  
 
[ new_oids ]  
 
# We can add new OIDs in here for use by 'ca' and 'req'.  
# Add a simple OID like this:  
# testoid1=1.2.3.4  
# Or use config file substitution like this:  
# testoid2=${testoid1}.5.6  
 
####################################################################  
[ ca ]  
default_ca   = CA_default      # The default ca section  
 
####################################################################  
[ CA_default ]  
 
#dir      = ./demoCA      # Where everything is kept  
dir      = "F:/Programme/Server/OpenSSL/bin"  
certs      = $dir/certs      # Where the issued certs are kept  
crl_dir      = $dir/crl      # Where the issued crl are kept  
database   = $dir/database.txt   # database index file.  
#unique_subject   = no         # Set to 'no' to allow creation of  
               # several ctificates with same subject.  
#new_certs_dir   = $dir/      # default place for new certs.  
new_certs_dir   = $dir  
 
certificate   = $dir/cacert.pem    # The CA certificate  
serial      = $dir/serial.txt       # The current serial number  
crlnumber   = $dir/crlnumber   # the current crl number  
               # must be commented out to leave a V1 CRL  
crl      = $dir/crl.pem       # The current CRL  
private_key   = $dir/private/cakey.pem# The private key  
RANDFILE   = $dir/private/.rand   # private random number file  
 
x509_extensions   = usr_cert      # The extentions to add to the cert  
 
# Comment out the following two lines for the "traditional"  
# (and highly broken) format.  
name_opt    = ca_default      # Subject Name options  
cert_opt    = ca_default      # Certificate field options  
 
# Extension copying option: use with caution.  
# copy_extensions = copy  
 
# Extensions to add to a CRL. Note: Netscape communicator chokes on V2 CRLs  
# so this is commented out by default to leave a V1 CRL.  
# crlnumber must also be commented out to leave a V1 CRL.  
# crl_extensions   = crl_ext  
 
default_days   = 365         # how long to certify for  
default_crl_days= 30         # how long before next CRL  
default_md   = sha1         # which md to use.  
preserve   = no         # keep passed DN ordering  
 
# A few difference way of specifying how similar the request should look  
# For type CA, the listed attributes must be the same, and the optional  
# and supplied fields are just that :-)  
policy      = policy_match  
 
# For the CA policy  
[ policy_match ]  
countryName      = match  
stateOrProvinceName   = match  
organizationName   = match  
organizationalUnitName   = optional  
commonName      = supplied  
emailAddress      = optional  
 
# For the 'anything' policy  
# At this point in time, you must list all acceptable 'object'  
# types.  
[ policy_anything ]  
countryName      = optional  
stateOrProvinceName   = optional  
localityName      = optional  
organizationName   = optional  
organizationalUnitName   = optional  
commonName      = supplied  
emailAddress      = optional  
 
####################################################################  
[ req ]  
default_bits      = 1024  
default_keyfile    = privkey.pem  
distinguished_name   = req_distinguished_name  
attributes      = req_attributes  
x509_extensions   = v3_ca   # The extentions to add to the self signed cert  
 
# Passwords for private keys if not present they will be prompted for  
# input_password = secret  
# output_password = secret  
 
# This sets a mask for permitted string types. There are several options.  
# default: PrintableString, T61String, BMPString.  
# pkix    : PrintableString, BMPString.  
# utf8only: only UTF8Strings.  
# nombstr : PrintableString, T61String (no BMPStrings or UTF8Strings).  
# MASK:XXXX a literal mask value.  
# WARNING: current versions of Netscape crash on BMPStrings or UTF8Strings  
# so use this option with caution!  
string_mask = nombstr  
 
# req_extensions = v3_req # The extensions to add to a certificate request  
 
[ req_distinguished_name ]  
countryName         = Country Name (2 letter code)  
countryName_default      = AU  
countryName_min         = 2  
countryName_max         = 2  
 
stateOrProvinceName      = State or Province Name (full name)  
stateOrProvinceName_default   = Some-State  
 
localityName         = Locality Name (eg, city)  
 
0.organizationName      = Organization Name (eg, company)  
0.organizationName_default   = Internet Widgits Pty Ltd  
 
# we can do this but it is not needed normally :-)  
#1.organizationName      = Second Organization Name (eg, company)  
#1.organizationName_default   = World Wide Web Pty Ltd  
 
organizationalUnitName      = Organizational Unit Name (eg, section)  
#organizationalUnitName_default   =  
 
commonName         = Common Name (eg, YOUR name)  
commonName_max         = 64  
 
emailAddress         = Email Address  
emailAddress_max      = 64  
 
# SET-ex3         = SET extension number 3  
 
[ req_attributes ]  
challengePassword      = A challenge password  
challengePassword_min      = 4  
challengePassword_max      = 20  
 
unstructuredName      = An optional company name  
 
[ usr_cert ]  
 
# These extensions are added when 'ca' signs a request.  
 
# This goes against PKIX guidelines but some CAs do it and some software  
# requires this to avoid interpreting an end user certificate as a CA.  
 
basicConstraints=CA:FALSE  
 
# Here are some examples of the usage of nsCertType. If it is omitted  
# the certificate can be used for anything *except* object signing.  
 
# This is OK for an SSL server.  
# nsCertType         = server  
 
# For an object signing certificate this would be used.  
# nsCertType = objsign  
 
# For normal client use this is typical  
# nsCertType = client, email  
 
# and for everything including object signing:  
# nsCertType = client, email, objsign  
 
# This is typical in keyUsage for a client certificate.  
# keyUsage = nonRepudiation, digitalSignature, keyEncipherment  
 
# This will be displayed in Netscape's comment listbox.  
nsComment         = "OpenSSL Generated Certificate"  
 
# PKIX recommendations harmless if included in all certificates.  
subjectKeyIdentifier=hash  
authorityKeyIdentifier=keyid,issuer  
 
# This stuff is for subjectAltName and issuerAltname.  
# Import the email address.  
# subjectAltName=email:copy  
# An alternative to produce certificates that aren't  
# deprecated according to PKIX.  
# subjectAltName=email:move  
 
# Copy subject details  
# issuerAltName=issuer:copy  
 
#nsCaRevocationUrl      = http://www.domain.dom/ca-crl.pem  
#nsBaseUrl  
#nsRevocationUrl  
#nsRenewalUrl  
#nsCaPolicyUrl  
#nsSslServerName  
 
[ v3_req ]  
 
# Extensions to add to a certificate request  
 
basicConstraints = CA:FALSE  
keyUsage = nonRepudiation, digitalSignature, keyEncipherment  
 
[ v3_ca ]  
 
 
# Extensions for a typical CA  
 
 
# PKIX recommendation.  
 
subjectKeyIdentifier=hash  
 
authorityKeyIdentifier=keyid:always,issuer:always  
 
# This is what PKIX recommends but some broken software chokes on critical  
# extensions.  
#basicConstraints = critical,CA:true  
# So we do this instead.  
basicConstraints = CA:true  
 
# Key usage: this is typical for a CA certificate. However since it will  
# prevent it being used as an test self-signed certificate it is best  
# left out by default.  
# keyUsage = cRLSign, keyCertSign  
 
# Some might want this also  
# nsCertType = sslCA, emailCA  
 
# Include email address in subject alt name: another PKIX recommendation  
# subjectAltName=email:copy  
# Copy issuer details  
# issuerAltName=issuer:copy  
 
# DER hex encoding of an extension: beware experts only!  
# obj=DER:02:03  
# Where 'obj' is a standard or added object  
# You can even override a supported extension:  
# basicConstraints= critical, DER:30:03:01:01:FF  
 
[ crl_ext ]  
 
# CRL extensions.  
# Only issuerAltName and authorityKeyIdentifier make any sense in a CRL.  
 
# issuerAltName=issuer:copy  
authorityKeyIdentifier=keyid:always,issuer:always  
 
[ proxy_cert_ext ]  
# These extensions should be added when creating a proxy certificate  
 
# This goes against PKIX guidelines but some CAs do it and some software  
# requires this to avoid interpreting an end user certificate as a CA.  
 
basicConstraints=CA:FALSE  
 
# Here are some examples of the usage of nsCertType. If it is omitted  
# the certificate can be used for anything *except* object signing.  
 
# This is OK for an SSL server.  
# nsCertType         = server  
 
# For an object signing certificate this would be used.  
# nsCertType = objsign  
 
# For normal client use this is typical  
# nsCertType = client, email  
 
# and for everything including object signing:  
# nsCertType = client, email, objsign  
 
# This is typical in keyUsage for a client certificate.  
# keyUsage = nonRepudiation, digitalSignature, keyEncipherment  
 
# This will be displayed in Netscape's comment listbox.  
nsComment         = "OpenSSL Generated Certificate"  
 
# PKIX recommendations harmless if included in all certificates.  
subjectKeyIdentifier=hash  
authorityKeyIdentifier=keyid,issuer:always  
 
# This stuff is for subjectAltName and issuerAltname.  
# Import the email address.  
# subjectAltName=email:copy  
# An alternative to produce certificates that aren't  
# deprecated according to PKIX.  
# subjectAltName=email:move  
 
# Copy subject details  
# issuerAltName=issuer:copy  
 
#nsCaRevocationUrl      = http://www.domain.dom/ca-crl.pem  
#nsBaseUrl  
#nsRevocationUrl  
#nsRenewalUrl  
#nsCaPolicyUrl  
#nsSslServerName  
 
# This really needs to be in place for it to be a proxy certificate.  
proxyCertInfo=critical,language:id-ppl-anyLanguage,pathlen:3,policy:foo
 

 
далее: создаём сертификатики для apache:
 

Код:
 
openssl req -config openssl.cnf -new > my-server.csr  
openssl rsa -in privkey.pem -out my-server.key  
openssl x509 -in my-server.csr -out my-server.cert -req -signkey my-server.key -days 365  
 

 
копируем файлы my-server.key & my-server.cert в папку conf\ssl. апдейтим httpd.conf - обратите внимание, он отличается от apache 1 конфа, некоторые детали устарели и больше не используются, так что пришлось мне апдейтить эту секцию по новому после перехода с первого апаче!:
 

Код:
 
<IfDefine SSL>  
 
LoadModule ssl_module modules/mod_ssl.so  
 
#Listen 80  
Listen 443  
 
SSLMutex default  
SSLRandomSeed startup builtin  
SSLRandomSeed connect builtin  
SSLSessionCache none  
 
ErrorLog logs/SSL.log  
LogLevel info  
 
<VirtualHost 127.0.0.1:443>  
#<VirtualHost _default_:443>  
 
 
ServerName 127.0.0.1  
 
RewriteEngine On  
#RewriteRule ^/(.*) /zope/$1 [l]  
 
 
 
 
   
DocumentRoot "F:/Programme/Server/Apache/Public/SSL"  
 
<Directory "F:/Programme/Server/Apache/Public/SSL">  
 
Options Indexes FollowSymLinks MultiViews Includes MultiViews Indexes  
AllowOverride All  
Order deny,allow  
Deny from all  
Allow from localhost  
 
</Directory>  
 
 
SSLEngine On  
SSLCertificateFile conf/ssl/my-server.cert  
SSLCertificateKeyFile conf/ssl/my-server.key  
</VirtualHost>  
 
</IfDefine>  
 

 
адреса папок соответсвенно вашей системе измените!
 
 
----------------------
 
теперь создаём сертификаты для ИИС 5:
 
1) создаём два пустых тхт файла в папке openssl\bin под названиями serial.txt & database.txt. открываем serial.txt, пишем "01" без кавычек и нажимаем return, чтобы две строчки было. сохраняем, закрваем.
 
2) используем опять же openssl через cmd:
 

Код:
 
openssl genrsa -des3 -out IIS.key 1024  
openssl req -config openssl.cnf -new -x509 -days 365 -key IIS.key -out IIS.cer  
openssl ca -config openssl.cnf -cert IIS.cer -in certreq.txt -keyfile IIS.key -days 365 -out IIS5.cer  
openssl x509 -in IIS5.cer -out IIS5_509.cer  
 

 
перед тем как задавать 3-ию строчку, нужно создать certreq.txt файл! для этого стартуем IIS snapIn manager:
 
%SystemRoot%\System32\inetsrv\iis.msc  
 
открываем properties нашей странички, открываем регистр security и там нажимаем на server certificate. а там уже дядя Билл вас возьмёт за ручку  :D
 
после создания сертификата ещё раз открываем IIS certificate wizard и используем созданный openssl сертификат для удовлетворения дяди Билла - файл IIS5_509.cer
 
Вот и всё. теперь тестируем оба сервака. для этого отключаем один из них!:
 

Код:
 
net stop WWW-Publishing  
net stop iisadmin  
httpd.exe -D SSL -k start  
 

 

Код:
 
net stop apache2.2  
net start WWW-Publishing  
net start iisadmin
 

 
названия зависят от ваших сёрвисов, меняется здесь:
 

Код:
 
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services  
 

 
или задаём разные порты для них:
 
apache: 443 -> httpS://127.0.0.1
IIS: 442 -> httpS://127.0.0.1:442
 
если появится окошко в браузере, как на моей картинке наверху, тада усё в порядочке
 
----------------------------
 
теперь создаём ссл файлик для проксомитрона. для этого используем ключики, созданные при создании сертификатов для апаче. создаём пустой файл в папке проксомитрона под названием proxcert.pem и копируем туда данные из файлов my-server.cert & my-server.key - сначала RSA-Key, потом сам сертификат - одно под другим

Всего записей: 5275 | Зарегистр. 25-11-2002 | Отправлено: 08:06 08-07-2006 | Исправлено: WRFan, 08:32 08-07-2006
Открыть новую тему     Написать ответ в эту тему

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » В помощь системному администратору » Apache 2.x Win32 и SSL (https)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru