Gleis0 Edition
Pins: (Pin 1+16 sind an dem Ende, an dem auch das Poti ist)
CA Key erzeugen
openssl ecparam -genkey -name prime256v1 | openssl ec -aes256 -out s77-nerdschloss-ca.key
CA Cert erzeugen (10 Jahre gültig; default: 30 Tage)
openssl req -new -x509 -sha256 -key s77-nerdschloss-ca.key -subj "/C=DE/ST=BW/L=Offenburg/CN=gleis0.section77.localdomain" -out s77-nerdschloss-ca.crt -days 3650
Nerdschloss Key (Server) erzeugen
openssl ecparam -name prime256v1 -genkey -noout -out nerdschloss.gleis0.section77.localdomain.key
Nerdschloss CSR erzeugen
openssl req -new -sha256 -key nerdschloss.gleis0.section77.localdomain.key -subj "/C=DE/ST=BW/L=Offenburg/CN=nerdschloss.gleis0.section77.localdomain" -out nerdschloss.gleis0.section77.localdomain.csr
Nerdschhloss Cert (Server) mit CA signieren
openssl x509 -req -in nerdschloss.gleis0.section77.localdomain.csr -CA s77-nerdschloss-ca.crt -CAkey s77-nerdschloss-ca.key -CAcreateserial -out nerdschloss.gleis0.section77.localdomain.crt -days 720 -sha256
Signiere CSR von $Mitglied
openssl x509 -req -in foo\@bar.de.csr -CA s77-nerdschloss-ca.crt -CAkey s77-nerdschloss-ca.key -CAcreateserial -out foo\@bar.de.crt -days 720 -sha256
Client fingerprints (für den ssl_client_fingerprint FP_Block in der nginx.conf benötigt)
openssl x509 -in foo\@bar.de.crt -noout -fingerprint | sed 's/SHA1\ Fingerprint=//;s/://g' >> fingerprints
Die Anleitung findest Du hier
/lib/systemd/system/nerdschloss.service
[Unit]
Description=Nerdschloss service
ConditionPathExists=/home/pi/nerdschloss
After=network.target
[Service]
Type=simple
User=pi
Group=pi
LimitNOFILE=1024
Restart=on-failure
RestartSec=10
WorkingDirectory=/home/pi/nerdschloss
ExecStart=/home/pi/nerdschloss/run.sh
# make sure log directory exists and owned by syslog
PermissionsStartOnly=true
StandardOutput=journal
StandardError=journal
SyslogIdentifier=nerdschloss
[Install]
WantedBy=multi-user.target
cp nerdschloss.gleis0.section77.localdomain.key nerdschloss.gleis0.section77.localdomain.crt s77-nerdschloss-ca.crt /etc/nginx/certificates/
chmod -R 400 /etc/nginx/certificates/
map_hash_bucket_size 256;
map_hash_max_size 256;
map $ssl_client_fingerprint $reject {
default 1;
#834A4E73A73469E84FD3BB85E362153F9E852970 0; #insert fingerprints of (allowed) s77 users here and assign the value 0
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name nerdschloss.gleis0.section77.localdomain;
ssl_certificate /etc/nginx/certificates/nerdschloss.gleis0.section77.localdomain.crt;
ssl_certificate_key /etc/nginx/certificates/nerdschloss.gleis0.section77.localdomain.key;
ssl_client_certificate /etc/nginx/certificates/s77-nerdschloss-ca.crt;
ssl_verify_client on;
ssl_prefer_server_ciphers on;
ssl_protocols TLSv1.3;
ssl_ciphers TLS-CHACHA20-POLY1305-SHA256:TLS-AES-256-GCM-SHA384:TLS-AES-128-GCM-SHA256:HIGH:!aNULL:!MD5;
#Check fingerprints from mappings above, if not listed reject request
if ($reject) { return 403; }
keepalive_timeout 10;
ssl_session_timeout 5m;
location / {
proxy_pass http://127.0.0.1:8080;
}
}
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" $ssl_client_s_dn';
access_log /var/log/nginx/access.log main;
openssl ec -in foobar.key -text
und diesen Block vollständig via copypasta in die Triggerapp importieren (z.B. via KDE-Connect Zwischenablage)-----BEGIN EC PRIVATE KEY-----
MEINGEHEIMERPRIVATERKEYDENSONSTNIEMANDSEHENSOLLTE
-----END EC PRIVATE KEY-----
Oder den Key unverschlüsselt abspeichern um ihn dann (via SICHEREM!!! Kanal) dort zu Importiern: openssl ec -passin pass:GEHEIM11elf! -in foobar.key -out foobar_decrypted.key
Dann könnt ihr die Einstellungen wie folgt vornehmen:
DISCLAIMER:
Insgesamt muss dazu gesagt werden dass ihr euer Handy entsprechend absichern solltet da dieser Key dann leider auch unverschlüsselt in der App verweilt bzw. man ihn dort exportieren kann. Wenn ihr aber ein Screenlock drin habt und das Endgerät NICHT unbeaufsichtigt entsperrt offen liegen lasst ist das in etwa ein äquivaltenes Sicherheitsniveau wie wenn ihr einen (Hardware)Schlüssel habt. Passt also bitte genauso gut darauf auf!