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:

Generátor CSR

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

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ář


CSRGenerator/CZ (last edited 2015-08-26 12:44:47 by AlesKastner)