Update to r44604:

Finish editorial review of OpenSSL chapter.
Update instructions and examples.
This commit is contained in:
Bjoern Heidotting 2016-06-05 15:47:50 +00:00
parent 3106194f99
commit c1e779d430
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=48899

View file

@ -5,7 +5,7 @@
$FreeBSD$
$FreeBSDde: de-docproj/books/handbook/security/chapter.xml,v 1.178 2012/04/30 17:07:41 bcr Exp $
basiert auf: r44600
basiert auf: r44604
-->
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="security">
<info><title>Sicherheit</title>
@ -1989,8 +1989,17 @@ kadmind5_server_enable="YES"</programlisting>
<secondary>Zertifikate erzeugen</secondary>
</indexterm>
<para>Ein Zertifikat erzeugen Sie mit dem nachstehenden
Kommando:</para>
<para>Um ein Zertifikat zu erzeugen, das von einer externen
<acronym>CA</acronym> signiert werden soll, geben Sie
folgenden Befehl und die angeforderten Informationen
ein. Diese Informationen werden in das Zertifikat
geschrieben. Für <literal>Common Name</literal> geben Sie
den vollqualifizierten Namen des Systems ein, auf dem das
Zertifikat später installiert wird. Wenn der Name nicht
übereinstimmt, wird die Anwendung, die das Zertifikat
überprüft, dem Benuzter eine Warnung anzeigen. Die
Überprüfung würde fehlschlagen und das Zertifikat damit
unbrauchbar machen.</para>
<screen>&prompt.root; <userinput>openssl req -new -nodes -out req.pem -keyout cert.pem</userinput>
Generating a 1024 bit RSA private key
@ -2018,52 +2027,66 @@ to be sent with your certificate request
A challenge password []:
An optional company name []:<userinput><replaceable>Another Name</replaceable></userinput></screen>
<para>Beachten Sie, dass die Eingabe bei
<quote>Common Name</quote> ein gültiger Domain-Name
sein muss. Eine andere Eingabe erzeugt ein unbrauchbares
Zertifikat. Das Zertifikat kann mit einer
Gültigkeitsdauer und anderen
Verschlüsselungsalgorithmen erzeugt werden.
&man.openssl.1; beschreibt die zur
<para>Bei der Erzeugung des Zertifikates können noch weitere
Optionen, wie die Gültigkeitsdauer
und alternative Verschlüsselungsalgorithmen, angegeben
werden. &man.openssl.1; beschreibt die zur
Verfügung stehenden Optionen.</para>
<para>Das Verzeichnis, in dem Sie den letzten Befehl ausgeführt
haben, enthält nun zwei Dateien: Die Anforderung für
ein neues Zertifikat wurde in <filename>req.pem</filename>
gespeichert. Diese Datei können Sie an eine
<acronym>CA</acronym> senden, wo die Angaben geprüft werden.
Nach erfolgreicher Prüfung wird das Zertifikat unterschrieben
und an Sie zurückgesandt. Die zweite Datei, <filename>cert.pem</filename>,
enthält den privaten Schlüssel für das Zertifikat
und darf auch keine Fall in fremde Hände geraten, da ein
Angreifer sonst in der Lage ist, anderen Personen oder Rechnern
vorzugaukeln, dass es sich bei ihm um Sie handelt.</para>
<para>Das folgende Kommando erstellt zwei Dateien im aktuellen
Verzeichnis: Die Anforderung für ein neues Zertifikat wird in
<filename>req.pem</filename> gespeichert. Diese Datei können
Sie an eine <acronym>CA</acronym> senden, wo die Angaben
geprüft werden. Nach erfolgreicher Prüfung wird das
Zertifikat signiert und an Sie zurückgesandt.
<filename>cert.pem</filename>, enthält den privaten Schlüssel
für das Zertifikat und darf auch keine Fall in fremde Hände
geraten, da ein Angreifer sonst in der Lage ist, anderen
Personen oder Rechnern vorzugaukeln, dass es sich bei ihm um
Sie handelt.</para>
<para>Wenn Sie keine Signatur einer Zertifizierungsstelle
benötigen, können Sie ein selbst-signiertes
benötigen, können Sie ein selbst signiertes
Zertifikat erstellen. Erzeugen Sie dazu zuerst einen
<acronym>RSA</acronym>-Schlüssel:</para>
<screen>&prompt.root; <userinput>openssl dsaparam -rand -genkey -out myRSA.key 1024</userinput></screen>
<screen>&prompt.root; <userinput>openssl genrsa -rand -genkey -out cert.key 2048</userinput>
0 semi-random bytes loaded
Generating RSA private key, 2048 bit long modulus
.............................................+++
.................................................................................................................+++
e is 65537 (0x10001)</screen>
<para>Erzeugen Sie dann den <acronym>CA</acronym>-Schlüssel:</para>
<para>Benutzen Sie diesen Schlüssel, um ein selbst signiertes
Zertifikat zu erzeugen. Folgen Sie wieder den Anweisungen am
Prompt:</para>
<screen>&prompt.root; <userinput>openssl gendsa -des3 -out myca.key myRSA.key</userinput></screen>
<screen>&prompt.root; <userinput>openssl req -new -x509 -days 365 -key cert.key -out cert.crt -sha256</userinput>
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:<userinput><replaceable>US</replaceable></userinput>
State or Province Name (full name) [Some-State]:<userinput><replaceable>PA</replaceable></userinput>
Locality Name (eg, city) []:<userinput><replaceable>Pittsburgh</replaceable></userinput>
Organization Name (eg, company) [Internet Widgits Pty Ltd]:<userinput><replaceable>My Company</replaceable></userinput>
Organizational Unit Name (eg, section) []:<userinput><replaceable>Systems Administrator</replaceable></userinput>
Common Name (e.g. server FQDN or YOUR name) []:<userinput><replaceable>localhost.example.org</replaceable></userinput>
Email Address []:<userinput><replaceable>trhodes@FreeBSD.org</replaceable></userinput></screen>
<para>Erstellen Sie mit diesem Schlüssel das
Zertifikat:</para>
<screen>&prompt.root; <userinput>openssl req -new -x509 -days 365 -key myca.key -out new.crt</userinput></screen>
<para>Zwei neue Dateien befinden sich nun im Verzeichnis:
Der Schlüssel der Zertifizierungsstelle
<para>Dieses Kommando erstellt zwei neue Dateien im aktuellen
Verzeichnis: Der Schlüssel der Zertifizierungsstelle
<filename>myca.key</filename> und das Zertifikat selbst,
<filename>new.crt</filename>. Sie sollten in einem
Verzeichnis, vorzugsweise unterhalb von
<filename>/etc/ssl</filename> abgelegt
werden, das nur von <systemitem class="username">root</systemitem> lesbar
ist. Die Zugriffsrechte der Dateien können mit &man.chmod.1;
auf <literal>0700</literal> gesetzt werden.</para>
<filename>/etc/ssl/</filename> abgelegt werden, das nur von
<systemitem class="username">root</systemitem> lesbar
ist. Die Zugriffsrechte der Dateien können mit
<command>chmod</command> auf <literal>0700</literal> gesetzt
werden.</para>
</sect2>
<sect2>
@ -2081,37 +2104,37 @@ An optional company name []:<userinput><replaceable>Another Name</replaceable></
in der Dokumentation der entsprechenden Software.</para>
</note>
<para>Ergänzen Sie die Konfigurationsdatei von
<application>Sendmail</application> (<filename>.mc</filename>)
um die nachstehenden Zeilen:</para>
<para>Um <application>Sendmail</application> zu konfigurieren,
fügen Sie die folgenden Zeilen in
<filename>/etc/rc.conf</filename> ein:</para>
<programlisting>dnl SSL Options
define(`confCACERT_PATH',`/etc/certs')dnl
define(`confCACERT',`/etc/certs/new.crt')dnl
define(`confSERVER_CERT',`/etc/certs/new.crt')dnl
define(`confSERVER_KEY',`/etc/certs/myca.key')dnl
define(`confTLS_SRV_OPTIONS', `V')dnl</programlisting>
<programlisting>sendmail_enable="YES"
sendmail_cert_enable="YES"
sendmail_cert_cn="<replaceable>localhost.example.org</replaceable>"</programlisting>
<para>Im Verzeichnis <filename>/etc/certs</filename> befindet
sich der Schlüssel und das Zertifikat. Bauen Sie danach im
Verzeichnis <filename>/etc/mail</filename>
mit dem Kommando <command>make install</command> die
<filename>.cf</filename>-Datei. Starten Sie anschließend
<application>Sendmail</application> mit
<command>make restart</command> neu.</para>
<para>Dadurch wird automatisch ein selbst signiertes Zertifikat
(<filename>/etc/mail/certs/host.cert</filename>), der
Schlüssel für die <acronym>CA</acronym>
(<filename>/etc/mail/certs/host.key</filename> und das
Zertifikat der <acronym>CA</acronym>
(<filename>/etc/mail/certs/cacert.pem</filename> erzeugt. Das
Zertifikat wird den in <option>sendmail_cert_cn</option>
festgelegten <literal>Common Name</literal> verwenden.
Nachdem Sie die Änderungen gespeichert haben, starten Sie
<application>Sendmail</application> neu:</para>
<screen>&prompt.root; <userinput>service sendmail restart</userinput></screen>
<para>Wenn alles gut ging, erscheinen keine Fehlermeldungen
in <filename>/var/log/maillog</filename> und
Sie sehen <application>Sendmail</application> in der
Prozessliste.</para>
<para>Testen Sie nun den Mailserver mit &man.telnet.1;:</para>
in <filename>/var/log/maillog</filename>. Für einen einfachen
Test, bauen Sie mit Hilfe von <command>telnet</command> eine
Verbindung zum Mailserver auf:</para>
<screen>&prompt.root; <userinput>telnet <replaceable>example.com</replaceable> 25</userinput>
Trying 192.0.34.166...
Connected to <systemitem class="fqdomainname">example.com</systemitem>.
Connected to example.com.
Escape character is '^]'.
220 <systemitem class="fqdomainname">example.com</systemitem> ESMTP Sendmail 8.12.10/8.12.10; Tue, 31 Aug 2004 03:41:22 -0400 (EDT)
220 example.com ESMTP Sendmail 8.14.7/8.14.7; Fri, 18 Apr 2014 11:50:32 -0400 (EDT)
<userinput>ehlo <replaceable>example.com</replaceable></userinput>
250-example.com Hello example.com [192.0.34.166], pleased to meet you
250-ENHANCEDSTATUSCODES
@ -2125,7 +2148,7 @@ Escape character is '^]'.
250-DELIVERBY
250 HELP
<userinput>quit</userinput>
221 2.0.0 <systemitem class="fqdomainname">example.com</systemitem> closing connection
221 2.0.0 example.com closing connection
Connection closed by foreign host.</screen>
<para>Wenn die Zeile <literal>STARTTLS</literal>