Update to r44604:
Finish editorial review of OpenSSL chapter. Update instructions and examples.
This commit is contained in:
parent
3106194f99
commit
c1e779d430
Notes:
svn2git
2020-12-08 03:00:23 +00:00
svn path=/head/; revision=48899
1 changed files with 83 additions and 60 deletions
|
@ -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>
|
||||
|
|
Loading…
Reference in a new issue