česky | english
Informace o nastavení serveru Apache - odkazy, aby sloužil několika webům HTTPS na jedné IP adrese, viz též VhostTaskForce.
Názvy všech domén, které chcete použít, musí být registrovány u http://www.cacert.org/, než můžete generovat certifikát.
Generování žádosti o certifikát pro webový server
Nejsnazší způsob je použít skript Generátor žádosti o podpis certifikátu (CSR) (soubor "csr") pro shell:
Lokálně ho uložte a pak spusťte, nezapomeňte opakovat běžný název (CommonName) i v alternativním názvu předmětu (SubjectAltName); krátký název serveru je použit jen pro název souboru.
Příklad činnosti skriptu:
[example@example ~]$ sh csr |
|
Private Key and Certificate Signing Request Generator |
Generátor privátního klíče a žádosti o podpis certifikátu |
This script was designed to suit the request format needed by |
Tento skript byl navržen pro formát žádosti potřebné |
the CAcert Certificate Authority: www.cacert.org |
pro certifikační autoritu CAcert: www.cacert.org |
Short Hostname (ie. imap big_srv www2): example |
Krátký název serveru |
FQDN/CommonName (ie. www.example.com) : example.org |
FQDN/běžný název serveru (viz Glosář níže) |
Type SubjectAltNames for the certificate, one per line. Enter a blank line to finish |
Zadávejte alternativní názvy jeden na řádek, prázdný řádek ukončí |
SubjectAltName: DNS:example.org |
|
SubjectAltName: DNS:www.example.org |
|
SubjectAltName: DNS:foo.example.org |
|
SubjectAltName: DNS:www.foo.example.org |
|
SubjectAltName: DNS:bar.example.org |
|
SubjectAltName: DNS:www.bar.example.org |
|
SubjectAltName: DNS:example.bar |
|
SubjectAltName: DNS:www.example.bar |
|
SubjectAltName: DNS: |
|
Running OpenSSL... |
Spouštím OpenSSL... |
Generating a 2048 bit RSA private key |
Generuji 2048-bitový privátní klíč RSA |
........................................................+++ |
|
................................................+++ |
(a zároveň veřejný klíč) |
writing new private key to '/home/example/example_privatekey.pem' |
zapisuji nový privátní klíč do... |
----- |
|
Copy the following Certificate Request and paste into CAcert website to obtain a Certificate. |
Zkopírujte následující žádost (CSR) a vložte ji do formuláře webu CAcert |
When you receive your certificate, you 'should' name it something like example_server.pem |
Když obdržíte certifikát, měli byste ho pojmenovat example_server.pem |
-----BEGIN CERTIFICATE REQUEST-----
MIIDBjCCAe4CAQAwFjEUMBIGA1UEAxMLZXhhbXBsZS5vcmcwggEiMA0GCSqGSIb3
DQEBAQUAA4IBDwAwggEKAoIBAQClsXcoj86dyYlIe96khbZqYtyV03ak+teyClv5
80I46irKcYQx4CFiirTCuusiAwsDfnDyZvnrwoxaUkc5nkw4Tlmb1j/y91U8rusX
Zu43rep8s0zs7aMx/q34TTCc5Mru8UQjbnj9aCX1DF+8cA0ayQMm1BOFv8nTFcjK
SnI5NdxRKDyqeH3KUgfxgGkBVU4VFVRU9XKD/zprzj+hWFT+fsjF7yQm0ZXDXaJ+
0Yr9mDQjfzdLP3GObc7y7rwz8a5ozATwfpqZiWYjM34oKFPSj7kwLdA+otx0glGG
e+P7G/E2uE+lbzi41CSFgKAjw3E0l1x47NoVD6DADS5mYIatAgMBAAGggaowgacG
CSqGSIb3DQEJDjGBmTCBljCBkwYDVR0RBIGLMIGIggtleGFtcGxlLm9yZ4IPd3d3
LmV4YW1wbGUub3Jngg9mb28uZXhhbXBsZS5vcmeCE3d3dy5mb28uZXhhbXBsZS5v
cmeCD2Jhci5leGFtcGxlLm9yZ4ITd3d3LmJhci5leGFtcGxlLm9yZ4ILZXhhbXBs
ZS5iYXKCD3d3dy5leGFtcGxlLmJhcjANBgkqhkiG9w0BAQQFAAOCAQEAHFiUDgVc
lDGoq+2kLmQxKtYagc37sugw4OoutILxrXF0zJUSplF4Aco/KhBcSLQUpsW5u11Q
tcxj4DqXrxsoZuawATKTGQXDaAxL/ud2FsXyhe2FC1h0id2cH12GsnDSziuFCM+t
rz05dqnW6mZR5OHILlYPoIPNqk3tbkIyOs4GplL9PZLNjSKJ3oeXJXn1iSI6oegB
dBJQMByDZsh7Xd/d1OFJMQq3TFMqmLEXErkXQnOmzBN375AHGYGZwozhVPjhfFZ1
74AvmxOe17+OLm1j10EA9J/5jLzIgK0vs7HgK0131S/JAV4Ik9JccAWByGlxeuVb
4Kf5vAucZZVe7g==
-----END CERTIFICATE REQUEST-----
The Certificate request is also available in /home/example/example_csr.pem |
Žádost o podpis certifikátu je také uložena v souboru /home/example/example_csr.pem |
The Private Key is stored in /home/example/example_privatekey.pem |
Privátní klíč je uložen v souboru /home/example/example_privatekey.pem |
Pak vložte svou žádost do webového formuláře na web cacert.org (pro příklad konfigurace, uvedený dále, požádejte o certifikát třídy 1) a když dostanete serverový certifikát, uložte ho jako example_server.pem.
Příklad konfigurace
Můžete zadat IP adresu nebo použít skupinu (wild card), ale nemůžete je míchat. Ke konfiguraci Apache lze přidat "Listen 192.168.0.1:443".
NameVirtualHost 192.168.0.1:443 # nebo # NameVirtualHost *:443 # foo.example.org:443 <VirtualHost 192.168.0.1:443> # nebo # <VirtualHost *:443> ServerName foo.example.org:443 UseCanonicalName On SSLEngine on SSLCertificateFile /etc/apache/example_server.pem SSLCertificateKeyFile /etc/apache/example_privatekey.pem SSLCipherSuite HIGH SSLProtocol all -SSLv2 DocumentRoot "/var/www/foo.example.org" <Directory "/var/www/foo.example.org"> Options Indexes AllowOverride None Order allow,deny Allow from all </Directory> </VirtualHost> # www.foo.example.org:443 <VirtualHost 192.168.0.1:443> # nebo # <VirtualHost *:443> ServerName www.foo.example.org:443 UseCanonicalName On SSLEngine on SSLCertificateFile /etc/apache/example_server.pem SSLCertificateKeyFile /etc/apache/example_privatekey.pem SSLCipherSuite HIGH SSLProtocol all -SSLv2 Redirect / https://foo.example.org/ </VirtualHost> # example.foo:443 <VirtualHost 192.168.0.1:443> # nebo # <VirtualHost *:443> ServerName example.foo:443 UseCanonicalName On SSLEngine on SSLCertificateFile /etc/apache/example_server.pem SSLCertificateKeyFile /etc/apache/example_privatekey.pem SSLCipherSuite HIGH SSLProtocol all -SSLv2 Redirect / https://foo.example.org/ </VirtualHost> # www.example.foo:443 <VirtualHost 192.168.0.1:443> # nebo # <VirtualHost *:443> ServerName www.example.foo:443 UseCanonicalName On SSLEngine on SSLCertificateFile /etc/apache/example_server.pem SSLCertificateKeyFile /etc/apache/example_privatekey.pem SSLCipherSuite HIGH SSLProtocol all -SSLv2 Redirect / https://foo.example.org/ </VirtualHost> # bar.example.org:443 <VirtualHost 192.168.0.1:443> # nebo # <VirtualHost *:443> ServerName bar.example.org:443 UseCanonicalName On SSLEngine on SSLCertificateFile /etc/apache/example_server.pem SSLCertificateKeyFile /etc/apache/example_privatekey.pem SSLCipherSuite HIGH SSLProtocol all -SSLv2 DocumentRoot "/var/www/bar.example.org" <Directory "/var/www/bar.example.org"> Options Indexes AllowOverride None Order allow,deny Allow from all </Directory> </VirtualHost> # www.bar.example.org:443 <VirtualHost 192.168.0.1:443> # nebo # <VirtualHost *:443> ServerName www.bar.example.org:443 UseCanonicalName On SSLEngine on SSLCertificateFile /etc/apache/example_server.pem SSLCertificateKeyFile /etc/apache/example_privatekey.pem SSLCipherSuite HIGH SSLProtocol all -SSLv2 Redirect / https://bar.example.org/ </VirtualHost> # example.bar:443 <VirtualHost 192.168.0.1:443> # nebo # <VirtualHost *:443> ServerName example.bar:443 UseCanonicalName On SSLEngine on SSLCertificateFile /etc/apache/example_server.pem SSLCertificateKeyFile /etc/apache/example_privatekey.pem SSLCipherSuite HIGH SSLProtocol all -SSLv2 Redirect / https://bar.example.org/ </VirtualHost> # www.example.bar:443 <VirtualHost 192.168.0.1:443> # nebo # <VirtualHost *:443> ServerName www.example.bar:443 UseCanonicalName On SSLEngine on SSLCertificateFile /etc/apache/example_server.pem SSLCertificateKeyFile /etc/apache/example_privatekey.pem SSLCipherSuite HIGH SSLProtocol all -SSLv2 Redirect / https://bar.example.org/ </VirtualHost>
Chyby neshody doménového jména
Pravděpodobně jsou různé způsoby, jak dostat chybové hlášení "Domain Name Mismatch" při nastavování Apache pro více virtuálních HTTPS serverů.
Příklad zobrazení této chyby je zde: https://en.wiki.aktivix.org/CAcert
Použití kanonického názvu (UseCanonicalName)
Apache má standardně funkci UseCanonicalName zapnutou (On) a pak můžete použít jeden VirtualHost s několika ServerAliasy, a všechny ty ServerAliasy i ServerName musí být uloženy v certifikátu.
Pokud ovšem máte UseCanonicalName vypnuto (Off), pak nemůžete použít žádný ServerAlias a musíte mít jeden VirtualHost na každý ServerName a nastavit všechny VirtualHosty pro použití téhož certifikátu.
Viz dokumentaci Apache: http://httpd.apache.org/docs/2.0/mod/core.html#usecanonicalname
Opakování CommonName jako SubjectAltName
CommonName se ignoruje, máte-li aspoň jedno SubjectAltName, takže je nejlépe opakovat CommonName jako SubjectAltName. Když to neuděláte, pak nastavení VirtualHost se ServerName stejným jako CommonName vyústí hlášením chyby Domain Name Mismatch.
Generátor CSR pro Windows
http://www2.futureware.at/~philipp/CSRGenerator.zip
Viz též
Glosář
CanonicalName - "jméno podle pravidel", tak, jak je zapsáno v DNS záznamu A nebo AAAA, nikoli alias CNAME
CommonName - "běžné jméno", obvyklý název, zpravidla FQDN, ale i prostý bez domény
- FQDN - (Fully Qualified Domain Name), plně kvalifikovaný doménový název, zpravidla A/AAAA s doménou nebo i CNAME s doménou
- Hostname - název "hosta" tj. v našem případě počítače, který je webovým serverem
ServerAlias - alternativní název nebo přezdívka nebo CNAME serveru
ServerName - (hlavní) název serveru, zde jde o ten, který je uveden v certifikátu na úvodní stránce, pro nějž je certifikát vystaven
- Short Hostname - krátký název serveru, nekvalifikovaný (bez domény), jednoduchý (například GOLEM nebo ALKA)
SubjectAltName - Alternativní název subjektu, používá se v certifikátech pro aliasy serverů (SAN, Subject Alternate Names)
UseCanonicalName - direktiva konfigurace Apache (On/Off), mění režim hledání/kontroly názvu webového serveru
VirtualHost - klausule konfigurace jednoho virtuálního webového serveru v Apache