PKI kleines Projekt: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
(→Testen) |
|||
| (5 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 86: | Zeile 86: | ||
== Zertifikat anzeigen == | == Zertifikat anzeigen == | ||
* openssl x509 -noout -text -in $FQDN.crt | * openssl x509 -noout -text -in $FQDN.crt | ||
| + | =Einbauen des Server Schlüssels und des Serverzertifikat= | ||
| + | *cp $FQDN.crt /etc/apache2/own.crt | ||
| + | *cp $FQDN.key /etc/apache2/own.key | ||
| + | |||
=Einbauen des Stammzertifikates= | =Einbauen des Stammzertifikates= | ||
;Nameserver | ;Nameserver | ||
| Zeile 96: | Zeile 100: | ||
*sudo update-ca-certificates | *sudo update-ca-certificates | ||
und in den Firefox importieren | und in den Firefox importieren | ||
| + | *Firefox | ||
| + | **Burgermenu | ||
| + | ***Settings | ||
| + | ****Cert oder Zert | ||
| + | *****Authorities | ||
| + | ******Import | ||
| + | *******it2XX-ca.crt | ||
| + | ********Alles ankreuzen | ||
| + | *********Übernehmen und glücklich sein | ||
| − | + | =Wieder auf dem Nameserver - Konfiguration testen und aktivieren= | |
| − | |||
| − | =Konfiguration testen und aktivieren= | ||
*sudo apache2ctl configtest | *sudo apache2ctl configtest | ||
*sudo systemctl reload apache2 | *sudo systemctl reload apache2 | ||
| Zeile 106: | Zeile 117: | ||
Im Browser die FQDN des Servers aufrufen. | Im Browser die FQDN des Servers aufrufen. | ||
;unverschlüsselt | ;unverschlüsselt | ||
| − | *http:// | + | *http://ns.it2XX.int |
;verschlüsselt | ;verschlüsselt | ||
| − | *https:// | + | *https://ns.it2XX.int |
| + | Test in der Konsole | ||
| + | *openssl s_client -host ns.it2XX.int -port 443 | ||
| + | <pre> | ||
| + | Connecting to 10.88.213.21 | ||
| + | CONNECTED(00000003) | ||
| + | depth=1 CN=it213-ca | ||
| + | verify return:1 | ||
| + | depth=0 CN=ns.it213.int | ||
| + | verify return:1 | ||
| + | --- | ||
| + | Certificate chain | ||
| + | 0 s:CN=ns.it213.int | ||
| + | i:CN=it213-ca | ||
| + | a:PKEY: RSA, 4096 (bit); sigalg: sha256WithRSAEncryption | ||
| + | v:NotBefore: Aug 3 13:19:03 2026 GMT; NotAfter: Aug 2 13:19:03 2030 GMT | ||
| + | --- | ||
| + | Server certificate | ||
| + | -----BEGIN CERTIFICATE----- | ||
| + | MIIFEzCCAvugAwIBAgIUHJiexBPRqBk3gpkkFjK564pfXSgwDQYJKoZIhvcNAQEL | ||
| + | BQAwEzERMA8GA1UEAwwIaXQyMTMtY2EwHhcNMjYwODAzMTMxOTAzWhcNMzAwODAy | ||
| + | MTMxOTAzWjAXMRUwEwYDVQQDDAxucy5pdDIxMy5pbnQwggIiMA0GCSqGSIb3DQEB | ||
| + | AQUAA4ICDwAwggIKAoICAQC6MB6dJlALylxhPYsvG52Rq+tk8ADDcdFLhcZmVzFZ | ||
| + | F6wEwlnVTIBLtIssVV2UyXiCzrKvhbfYYukrPl9z5ciIMXyDmVtAic/Y0fYQZwc2 | ||
| + | jzyTJmjivnbaO2nZ+6p09Rf4HI1DkUwpnhYQtTKHuOF4Q265Opl5Egr7XJ64qFMr | ||
| + | B+PafLJ1Dltgwap+8uLff20Hq0qqGHnqbe8QVAll/S86XpAjx+vsIo5ZrcpR6ED3 | ||
| + | VdAWEuS/PNe7zmZf2INN0hVvu0bBzw4NjKzRWiwY0tC7MwgpGzYYXH8j/d6cRPh7 | ||
| + | OozLyTB/iuqm41frSDOjVzbIlezBybg0jsyDrm7k98AcFTxh8O/NORhzE8pNZYfq | ||
| + | PUR9WSwKsAFVBkhDmfoskAXz6Iy39iHqRi92k+/+l8iI31L1gLZJOqqCBWtHgHTy | ||
| + | Kjr68FQU5cCSkhKYY8hswSLwh5v+laW7EUYrIGlUt3iDP2V73eI9odFQiySmycZR | ||
| + | tr81BCw/qV3IR6oHk1Rclo81bM/Sw8kGMfeF3+UCGlIitJl9ADjDHhx1tIOUBMad | ||
| + | nkMEj8L5W8POqSDWm5kFkvjmf20CAb5tTvAibXhPz5uZufYvUEOGZRjsxTk9PJ7w | ||
| + | FO9zzp0EReKcOLMnUFNOfLel2wFHTfRVW8hPW7AIFH7Ic7WZgB4sUGRfShEJbeTF | ||
| + | rwIDAQABo1swWTAXBgNVHREEEDAOggxucy5pdDIxMy5pbnQwHQYDVR0OBBYEFPdg | ||
| + | fiwsOp0ZNYlocYj2mtVByHnYMB8GA1UdIwQYMBaAFGVWvHAOmqSHBfpiTt+4GflV | ||
| + | VX4HMA0GCSqGSIb3DQEBCwUAA4ICAQDF04vcKhK/xGHfhTcUaBXjAen9Nj0FEBp4 | ||
| + | eh1zblRuK9Ab89XJSvXIQzF0z7fc5M9SaCIMt8X08bYTbUWPWtPCnZp4qtTJdIVh | ||
| + | lSPL7Prm6CLPcN6WH0YY3hKCLX9HZzaKqXb0U0fBG06mEsvrZP+s+gws+1C8gV/4 | ||
| + | AA+26qusKXIfF+d6x+GPkUpu0WA5953rYoH3SGJmMsZHhoVplA1WDskj6K73TqPu | ||
| + | BziP/Geo/zEZudtgGgJSDdIO/vRpUs63IOb5jB6kMO50vVGptCOqzpuwniWH2xgv | ||
| + | A5gy1dDv/kLzT7nS8BSDAhZPynQHvRzg3mC7pwjg8fYhWDbNiFknTkHu++ToYXXs | ||
| + | 8CsSp3D5wKW3EJdfb4A4rgtVnA+faAgl0eCFumAgfrRaLwNENl6Vqi3IewidGGQN | ||
| + | juksnsfSRAxlr/D/vvxcQm1IWt/bUM4LjKxADPne9pnGp0WxxDCZyCg0bJPUQYzr | ||
| + | 6PCx41J1sovNdQDHaWTt2Fd27IMwTGtnCBka8owg7IayXf0jRDPSOpymmqEZ9NZm | ||
| + | FCD8ky/VzUxu2RCEAwskUnPphcmx84Dp4oY5EDWyUrpw26T3ap1ahUYag4oMih0N | ||
| + | lXuA+V9cuEiDstMrx5lZetBTNBKN83xOMevJrygpIVAlUzwsiSqbZxCUDFNuTOE/ | ||
| + | ehxiOUSxHw== | ||
| + | -----END CERTIFICATE----- | ||
| + | subject=CN=ns.it213.int | ||
| + | issuer=CN=it213-ca | ||
| + | --- | ||
| + | No client certificate CA names sent | ||
| + | Peer signing digest: SHA256 | ||
| + | Peer signature type: rsa_pss_rsae_sha256 | ||
| + | Negotiated TLS1.3 group: X25519MLKEM768 | ||
| + | --- | ||
| + | SSL handshake has read 3207 bytes and written 1634 bytes | ||
| + | Verification: OK | ||
| + | --- | ||
| + | New, TLSv1.3, Cipher is TLS_AES_256_GCM_SHA384 | ||
| + | Protocol: TLSv1.3 | ||
| + | Server public key is 4096 bit | ||
| + | This TLS version forbids renegotiation. | ||
| + | Compression: NONE | ||
| + | Expansion: NONE | ||
| + | No ALPN negotiated | ||
| + | Early data was not sent | ||
| + | Verify return code: 0 (ok) | ||
| + | --- | ||
| + | --- | ||
| + | Post-Handshake New Session Ticket arrived: | ||
| + | SSL-Session: | ||
| + | Protocol : TLSv1.3 | ||
| + | Cipher : TLS_AES_256_GCM_SHA384 | ||
| + | Session-ID: 0B421F4A9D88E58F7EEC304D1935485D217F31F9F53D6565E50287E6E690895E | ||
| + | Session-ID-ctx: | ||
| + | Resumption PSK: 14A66A9940FC3E6351C4E70889C0AD3C343FC814DB14CD194F8CD37B16711F42D636CA63C95F97A7949627F151B5490D | ||
| + | PSK identity: None | ||
| + | PSK identity hint: None | ||
| + | SRP username: None | ||
| + | TLS session ticket lifetime hint: 300 (seconds) | ||
| + | TLS session ticket: | ||
| + | 0000 - 49 6e 26 ff 57 a6 f5 1f-3b 99 59 01 14 5a 8c 7e In&.W...;.Y..Z.~ | ||
| + | 0010 - a7 c3 1e f3 cd eb 99 4c-c7 bf 79 65 c1 0e d7 d8 .......L..ye.... | ||
| + | |||
| + | Start Time: 1785765049 | ||
| + | Timeout : 7200 (sec) | ||
| + | Verify return code: 0 (ok) | ||
| + | Extended master secret: no | ||
| + | Max Early Data: 0 | ||
| + | --- | ||
| + | read R BLOCK | ||
| + | --- | ||
| + | Post-Handshake New Session Ticket arrived: | ||
| + | SSL-Session: | ||
| + | Protocol : TLSv1.3 | ||
| + | Cipher : TLS_AES_256_GCM_SHA384 | ||
| + | Session-ID: 98F1ED5BB5EBF49E57C188841B17CAF7122147599540BEB1741E01190641398C | ||
| + | Session-ID-ctx: | ||
| + | Resumption PSK: D6DA3E4D614C32BB5D231E7D4FFD83200602CE876B37B0000FC4B2894163DD731D85A2712E101BE6A14F2180463CD283 | ||
| + | PSK identity: None | ||
| + | PSK identity hint: None | ||
| + | SRP username: None | ||
| + | TLS session ticket lifetime hint: 300 (seconds) | ||
| + | TLS session ticket: | ||
| + | 0000 - 9e 67 3f 6a 44 ad e6 ad-a5 7f 7e 51 ba 11 a0 22 .g?jD.....~Q..." | ||
| + | 0010 - 01 93 65 5e 03 68 9d 59-f9 84 12 2c 79 ce 8a 55 ..e^.h.Y...,y..U | ||
| − | + | Start Time: 1785765049 | |
| − | + | Timeout : 7200 (sec) | |
| − | + | Verify return code: 0 (ok) | |
| − | + | Extended master secret: no | |
| − | + | Max Early Data: 0 | |
| − | + | --- | |
| − | + | read R BLOCK | |
| − | + | </pre> | |
| − | |||
| − | |||
| − | |||
| − | |||
Aktuelle Version vom 3. August 2026, 13:53 Uhr
Ziel des Projektes
- Wir wollen einen Apache2 Webserver auf dem ns testweise integrieren
Installation
Apache2 wird zusammen mit PHP und dem Apache-PHP-Modul installiert.
- sudo apt update
- sudo apt install -y apache2 php libapache2-mod-php
PHP aktivieren
Das PHP- und das SSL-Modul werden aktiviert. Damit die Änderung greift, muss Apache anschließend neu gestartet werden.
- sudo a2enmod php8.4 ssl
- sudo systemctl restart apache2
Webroot
Das Webroot-Verzeichnis ist der Standardort für Webseiten unter Apache.
- ls /var/www/html
Dynamische Testseite erstellen
Die Datei index.php ersetzt die Apache-Standardseite und gibt Systeminformationen aus.
- sudo vi /var/www/html/index.php
Inhalt der Datei:
<?php
$hostname = gethostname();
$ip = $_SERVER['SERVER_ADDR'];
$domain = php_uname('n');
// Gateway und Nameserver aus /etc/resolv.conf und ip route auslesen
$nameserver = shell_exec("awk '/^nameserver/{print $2; exit}' /etc/resolv.conf");
$gateway = shell_exec("ip route | awk '/^default/{print $3; exit}'");
?>
<!DOCTYPE html>
<html>
<head><title>Systeminfo</title></head>
<body>
<h1>Systeminfo</h1>
<table>
<tr><td>Hostname</td><td><?= htmlspecialchars($hostname) ?></td></tr>
<tr><td>IP-Adresse</td><td><?= htmlspecialchars($ip) ?></td></tr>
<tr><td>Domain</td><td><?= htmlspecialchars($domain) ?></td></tr>
<tr><td>Nameserver</td><td><?= htmlspecialchars(trim($nameserver)) ?></td></tr>
<tr><td>Gateway</td><td><?= htmlspecialchars(trim($gateway)) ?></td></tr>
</table>
</body>
</html>
Standardseite löschen
Die Apache-Standardseite wird gelöscht damit die neue PHP-Seite aufgerufen wird.
- sudo rm /var/www/html/index.html
Konfiguration der Seiten
- Verfügbare Konfigurationen
- DIR: /etc/apache2/sites-available/
- Aktivierten Konfigurationen
- DIR: /etc/apache2/sites-enabled
Neue Konfigurationen anlegen
- sudo vi /etc/apache2/sites-available/it.conf
<VirtualHost *:80>
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
<VirtualHost *:443>
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /etc/apache2/own.crt
SSLCertificateKeyFile /etc/apache2/own.key
</VirtualHost>
Aktivieren und deaktivieren
- deaktivieren der Default Seite
- sudo a2dissite 000-default.conf
- aktivieren unserer Seite
- sudo a2ensite it.conf
Zertifizierungsstelle und Zertifkat erstellen
CA erstellen
- CA=it2XX-ca
- openssl req -new -x509 -newkey rsa:4096 -nodes -keyout $CA.key -out $CA.crt -days 3650 -subj "/CN=$CA"
Anzeigen des CA Certs
- openssl x509 -noout -text -in $CA.crt
Request und Privaten Key erstellen
FQDN=ns.it2XX.int
- openssl req -new -newkey rsa:4096 -nodes -keyout $FQDN.key -out $FQDN.csr -subj "/CN=$FQDN"
Signierung
- openssl x509 -req -days 1460 -in $FQDN.csr -CA $CA.crt -CAkey $CA.key -CAcreateserial -out $FQDN.crt -extfile <(echo "subjectAltName=DNS:$FQDN")
Zertifikat anzeigen
- openssl x509 -noout -text -in $FQDN.crt
Einbauen des Server Schlüssels und des Serverzertifikat
- cp $FQDN.crt /etc/apache2/own.crt
- cp $FQDN.key /etc/apache2/own.key
Einbauen des Stammzertifikates
- Nameserver
- cp $CA.crt /usr/local/share/ca-certificates
- update-ca-certificates
- Client
- scp $CA.crt kit@172.26.2XX.10:
dort
- sudo cp $CA.crt /usr/local/share/ca-certificates
- sudo update-ca-certificates
und in den Firefox importieren
- Firefox
- Burgermenu
- Settings
- Cert oder Zert
- Authorities
- Import
- it2XX-ca.crt
- Alles ankreuzen
- Übernehmen und glücklich sein
- Alles ankreuzen
- it2XX-ca.crt
- Import
- Authorities
- Cert oder Zert
- Settings
- Burgermenu
Wieder auf dem Nameserver - Konfiguration testen und aktivieren
- sudo apache2ctl configtest
- sudo systemctl reload apache2
Testen
Im Browser die FQDN des Servers aufrufen.
- unverschlüsselt
- verschlüsselt
Test in der Konsole
- openssl s_client -host ns.it2XX.int -port 443
Connecting to 10.88.213.21
CONNECTED(00000003)
depth=1 CN=it213-ca
verify return:1
depth=0 CN=ns.it213.int
verify return:1
---
Certificate chain
0 s:CN=ns.it213.int
i:CN=it213-ca
a:PKEY: RSA, 4096 (bit); sigalg: sha256WithRSAEncryption
v:NotBefore: Aug 3 13:19:03 2026 GMT; NotAfter: Aug 2 13:19:03 2030 GMT
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIFEzCCAvugAwIBAgIUHJiexBPRqBk3gpkkFjK564pfXSgwDQYJKoZIhvcNAQEL
BQAwEzERMA8GA1UEAwwIaXQyMTMtY2EwHhcNMjYwODAzMTMxOTAzWhcNMzAwODAy
MTMxOTAzWjAXMRUwEwYDVQQDDAxucy5pdDIxMy5pbnQwggIiMA0GCSqGSIb3DQEB
AQUAA4ICDwAwggIKAoICAQC6MB6dJlALylxhPYsvG52Rq+tk8ADDcdFLhcZmVzFZ
F6wEwlnVTIBLtIssVV2UyXiCzrKvhbfYYukrPl9z5ciIMXyDmVtAic/Y0fYQZwc2
jzyTJmjivnbaO2nZ+6p09Rf4HI1DkUwpnhYQtTKHuOF4Q265Opl5Egr7XJ64qFMr
B+PafLJ1Dltgwap+8uLff20Hq0qqGHnqbe8QVAll/S86XpAjx+vsIo5ZrcpR6ED3
VdAWEuS/PNe7zmZf2INN0hVvu0bBzw4NjKzRWiwY0tC7MwgpGzYYXH8j/d6cRPh7
OozLyTB/iuqm41frSDOjVzbIlezBybg0jsyDrm7k98AcFTxh8O/NORhzE8pNZYfq
PUR9WSwKsAFVBkhDmfoskAXz6Iy39iHqRi92k+/+l8iI31L1gLZJOqqCBWtHgHTy
Kjr68FQU5cCSkhKYY8hswSLwh5v+laW7EUYrIGlUt3iDP2V73eI9odFQiySmycZR
tr81BCw/qV3IR6oHk1Rclo81bM/Sw8kGMfeF3+UCGlIitJl9ADjDHhx1tIOUBMad
nkMEj8L5W8POqSDWm5kFkvjmf20CAb5tTvAibXhPz5uZufYvUEOGZRjsxTk9PJ7w
FO9zzp0EReKcOLMnUFNOfLel2wFHTfRVW8hPW7AIFH7Ic7WZgB4sUGRfShEJbeTF
rwIDAQABo1swWTAXBgNVHREEEDAOggxucy5pdDIxMy5pbnQwHQYDVR0OBBYEFPdg
fiwsOp0ZNYlocYj2mtVByHnYMB8GA1UdIwQYMBaAFGVWvHAOmqSHBfpiTt+4GflV
VX4HMA0GCSqGSIb3DQEBCwUAA4ICAQDF04vcKhK/xGHfhTcUaBXjAen9Nj0FEBp4
eh1zblRuK9Ab89XJSvXIQzF0z7fc5M9SaCIMt8X08bYTbUWPWtPCnZp4qtTJdIVh
lSPL7Prm6CLPcN6WH0YY3hKCLX9HZzaKqXb0U0fBG06mEsvrZP+s+gws+1C8gV/4
AA+26qusKXIfF+d6x+GPkUpu0WA5953rYoH3SGJmMsZHhoVplA1WDskj6K73TqPu
BziP/Geo/zEZudtgGgJSDdIO/vRpUs63IOb5jB6kMO50vVGptCOqzpuwniWH2xgv
A5gy1dDv/kLzT7nS8BSDAhZPynQHvRzg3mC7pwjg8fYhWDbNiFknTkHu++ToYXXs
8CsSp3D5wKW3EJdfb4A4rgtVnA+faAgl0eCFumAgfrRaLwNENl6Vqi3IewidGGQN
juksnsfSRAxlr/D/vvxcQm1IWt/bUM4LjKxADPne9pnGp0WxxDCZyCg0bJPUQYzr
6PCx41J1sovNdQDHaWTt2Fd27IMwTGtnCBka8owg7IayXf0jRDPSOpymmqEZ9NZm
FCD8ky/VzUxu2RCEAwskUnPphcmx84Dp4oY5EDWyUrpw26T3ap1ahUYag4oMih0N
lXuA+V9cuEiDstMrx5lZetBTNBKN83xOMevJrygpIVAlUzwsiSqbZxCUDFNuTOE/
ehxiOUSxHw==
-----END CERTIFICATE-----
subject=CN=ns.it213.int
issuer=CN=it213-ca
---
No client certificate CA names sent
Peer signing digest: SHA256
Peer signature type: rsa_pss_rsae_sha256
Negotiated TLS1.3 group: X25519MLKEM768
---
SSL handshake has read 3207 bytes and written 1634 bytes
Verification: OK
---
New, TLSv1.3, Cipher is TLS_AES_256_GCM_SHA384
Protocol: TLSv1.3
Server public key is 4096 bit
This TLS version forbids renegotiation.
Compression: NONE
Expansion: NONE
No ALPN negotiated
Early data was not sent
Verify return code: 0 (ok)
---
---
Post-Handshake New Session Ticket arrived:
SSL-Session:
Protocol : TLSv1.3
Cipher : TLS_AES_256_GCM_SHA384
Session-ID: 0B421F4A9D88E58F7EEC304D1935485D217F31F9F53D6565E50287E6E690895E
Session-ID-ctx:
Resumption PSK: 14A66A9940FC3E6351C4E70889C0AD3C343FC814DB14CD194F8CD37B16711F42D636CA63C95F97A7949627F151B5490D
PSK identity: None
PSK identity hint: None
SRP username: None
TLS session ticket lifetime hint: 300 (seconds)
TLS session ticket:
0000 - 49 6e 26 ff 57 a6 f5 1f-3b 99 59 01 14 5a 8c 7e In&.W...;.Y..Z.~
0010 - a7 c3 1e f3 cd eb 99 4c-c7 bf 79 65 c1 0e d7 d8 .......L..ye....
Start Time: 1785765049
Timeout : 7200 (sec)
Verify return code: 0 (ok)
Extended master secret: no
Max Early Data: 0
---
read R BLOCK
---
Post-Handshake New Session Ticket arrived:
SSL-Session:
Protocol : TLSv1.3
Cipher : TLS_AES_256_GCM_SHA384
Session-ID: 98F1ED5BB5EBF49E57C188841B17CAF7122147599540BEB1741E01190641398C
Session-ID-ctx:
Resumption PSK: D6DA3E4D614C32BB5D231E7D4FFD83200602CE876B37B0000FC4B2894163DD731D85A2712E101BE6A14F2180463CD283
PSK identity: None
PSK identity hint: None
SRP username: None
TLS session ticket lifetime hint: 300 (seconds)
TLS session ticket:
0000 - 9e 67 3f 6a 44 ad e6 ad-a5 7f 7e 51 ba 11 a0 22 .g?jD.....~Q..."
0010 - 01 93 65 5e 03 68 9d 59-f9 84 12 2c 79 ce 8a 55 ..e^.h.Y...,y..U
Start Time: 1785765049
Timeout : 7200 (sec)
Verify return code: 0 (ok)
Extended master secret: no
Max Early Data: 0
---
read R BLOCK