nitrokey:linuxmint:pro

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
nitrokey:linuxmint:pro [30.08.2020 11:15. ] – [Export des public-key auf einen Keyserver] djangonitrokey:linuxmint:pro [18.11.2024 18:56. ] (aktuell) – Externe Bearbeitung 127.0.0.1
Zeile 62: Zeile 62:
  
 Diese Pakete installieren wir, falls diese nicht bereits im System vorhanden sind, bei Bedarf mit Hilfe von **apt**. Diese Pakete installieren wir, falls diese nicht bereits im System vorhanden sind, bei Bedarf mit Hilfe von **apt**.
-   apt-get install scdaemon libccid+   $ sudo apt install scdaemon libccid
  
 /*  /* 
Zeile 108: Zeile 108:
  
 Alternativ können wir natürlich das Programm auch direkt auf der Konsole starten: Alternativ können wir natürlich das Programm auch direkt auf der Konsole starten:
-   nextcloud-app+   nitrokey-app
  
 Ein Hinweis zur Nitrokey App wird ausgegeben. Ein Hinweis zur Nitrokey App wird ausgegeben.
Zeile 214: Zeile 214:
 {{ :nitrokey:nitropad_056.png?nolink&375 |Bild: Nitrokey App - Ninweis zum erfolgreichen Kopieren des Passortes aus dem Passwort-Safe}} {{ :nitrokey:nitropad_056.png?nolink&375 |Bild: Nitrokey App - Ninweis zum erfolgreichen Kopieren des Passortes aus dem Passwort-Safe}}
  
-==== Nitrokey Pro und GnuPG  ====+==== GnuPG  ====
 Da es sich bei der Chipkarte des **Nitrokey Pro** um eine standardkompatible OpenPGP-Karte handelt, kann der Kryptostick mit Hilfe von **[[https://www.gnupg.org/|GnuPG]]** verwaltet werden. Hierzu installieren wir uns das Paket **gnupg2**, sofern es nicht bereits bei der Erstkonfiguration unseres Rechner installiert wurde. Da es sich bei der Chipkarte des **Nitrokey Pro** um eine standardkompatible OpenPGP-Karte handelt, kann der Kryptostick mit Hilfe von **[[https://www.gnupg.org/|GnuPG]]** verwaltet werden. Hierzu installieren wir uns das Paket **gnupg2**, sofern es nicht bereits bei der Erstkonfiguration unseres Rechner installiert wurde.
-   apt-get install gpg+   $ sudo apt install gpg
  
 Alle Sicherheitsfunktionen wie z.B. das Erzeugen/Speichern von GPG-Schlüsseln, das Verschlüsseln/Entschlüsseln einer Datei, das Signieren einer Nachricht, die auf der Hardware ausgeführt werden, können mit Hilfe des Befehls **gpg** gesteuert werden.  Alle Sicherheitsfunktionen wie z.B. das Erzeugen/Speichern von GPG-Schlüsseln, das Verschlüsseln/Entschlüsseln einer Datei, das Signieren einer Nachricht, die auf der Hardware ausgeführt werden, können mit Hilfe des Befehls **gpg** gesteuert werden. 
Zeile 584: Zeile 584:
 Am Ende verlassen wir den den Karten-Editor mit dem Befehl **''quit''**. Am Ende verlassen wir den den Karten-Editor mit dem Befehl **''quit''**.
  
-=== Schlüssel generieren ====+=== Schlüssel auf dem Nitrokey Pro generieren ==== 
 +<WRAP center round tip 80%> 
 +**Pro-Tip:**\\ 
 +Aus sicherheitsgesichtspunkten und Anwendersicht ist das Generieren des Schlüsselmaterials auf einer OpenPGP-Smart-Card immer dem manuellen Importieren vorzuziehen! 
 +</WRAP> 
 + 
 Wir wollen uns nun einen neuen GPG-Schlüssel in der SmartCard erzeugen und rufen hierzu den Befehl **generate** auf. Wir werden nun menügeführt durch eine Reihe von Standardfragen geführt, welche alle relevante Daten abfragen, die zur Generierung des Hauptschlüssels wie auch der Unterschlüssel die für die Aufgaben Signatur, Verschlüsselung und Authentifizierung benötigt werden. Wir wollen uns nun einen neuen GPG-Schlüssel in der SmartCard erzeugen und rufen hierzu den Befehl **generate** auf. Wir werden nun menügeführt durch eine Reihe von Standardfragen geführt, welche alle relevante Daten abfragen, die zur Generierung des Hauptschlüssels wie auch der Unterschlüssel die für die Aufgaben Signatur, Verschlüsselung und Authentifizierung benötigt werden.
    $ gpg --card-edit    $ gpg --card-edit
Zeile 612: Zeile 618:
  
 Real name: Django aka Bastard Operator from Hell Real name: Django aka Bastard Operator from Hell
-Email address: django@mailserver.guru+Email address: django@nausch.org
 Comment:  Comment: 
 You selected this USER-ID: You selected this USER-ID:
-    "Django aka Bastard Operator from Hell <django@mailserver.guru>"+    "Django aka Bastard Operator from Hell <django@nausch.org>"
  
 Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? o Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? o
Zeile 625: Zeile 631:
  
 gpg/card></code> gpg/card></code>
 +
 +<WRAP center round important 75%>
 +Den Nitrokey Pro Stick auf keinen Fall vom USB-Port trennen! 
 +
 +{{ :nitrokey:nitropad_061.png?nolink&400 |Bild: Nitrokey Pro mit leuchtender rote LED beim Schlüsselgenerieren}}
 +
 +Solange die rote LED Leuchtet werden ausreichend Zufallszahlen generiert und das dauert in aller Regel bis zu 8 Minuten!
 +
 +</WRAP>
 +
 +
  
 Rufen wir nun erneut die auf der OpenPGP-Karte des Nitrokey Pro gespeicherten Daten ab, so sehen wir nun nach Eingabe des Kommandos **''list''** den erzeugten PGP-Schlüssel, samt seiner ID und die drei Unterschlüssel zum Signieren, dem Schlüssel zur Verschlüsselung und den dritten Authentifizierungs-Schlüssel.  Rufen wir nun erneut die auf der OpenPGP-Karte des Nitrokey Pro gespeicherten Daten ab, so sehen wir nun nach Eingabe des Kommandos **''list''** den erzeugten PGP-Schlüssel, samt seiner ID und die drei Unterschlüssel zum Signieren, dem Schlüssel zur Verschlüsselung und den dritten Authentifizierungs-Schlüssel. 
Zeile 630: Zeile 647:
   gpg/card> list   gpg/card> list
  
-<code>Reader ...........: 20A0:4108:000034D40000000000000000:0 +<code>Reader ...........: 20F0:4109:0000D34DB33F000000000000:0 
-Application ID ...: D2760001240102010005000034D40000+Application ID ...: D27600012701020100066000425D0000
 Application type .: OpenPGP Application type .: OpenPGP
 Version ..........: 2.1 Version ..........: 2.1
Zeile 653: Zeile 670:
       created ....: 2020-08-29 20:42:00       created ....: 2020-08-29 20:42:00
 General key info..:  General key info..: 
-pub  rsa4096/56D31D76E0C812E8 2020-08-29 Django aka Bastard Operator from Hell <django@mailserver.guru>+pub  rsa4096/56D31D76E0C812E8 2020-08-29 Django aka Bastard Operator from Hell <django@nausch.org>
 sec>  rsa4096/56D31D76E0C812E8  created: 2020-08-29  expires: never      sec>  rsa4096/56D31D76E0C812E8  created: 2020-08-29  expires: never     
                                 card-no: 0005 000034D4                                 card-no: 0005 000034D4
Zeile 665: Zeile 682:
  
   gpg/card> quit   gpg/card> quit
 +
 +=== vorhandenen Schlüssel in den Nitrokey Pro importieren ====
 +Es kann natürlich auch durchaus sein, dass wir bereits über einem ausreichend großen und sicher verwahrten PGP-Schlüssel verfügen. Da beitet es sich natürlich an, diesen auf in die OpenPGP-Smartcard des Nitrrokey Pro zu importieren und die Version auf der Festplatte des Rechners sicher zu entfernen/zu schreddern.
 +
 +== PGP-Unterschlüssel - subkeys ==
 +<WRAP center round tip 95%>
 +Bei der **[[https://de.wikipedia.org/wiki/Asymmetrisches_Kryptosystem|Public-Key-Verschlüsselungsverfahren]]** denken wir in erster Linie an die beiden Schlüssel, den public-key, den wir z.B. zum Verschlüsseln von Informationen verwenden und dem secret-key, den wir zum Signieren und zum Entschlüsseln verwenden. Ganz so [[https://de.wikipedia.org/wiki/Trivialit%C3%A4t|trivial]] ist das aber bei genauerer Betrachtung doch nicht und wir müssen uns, bevor wir mit dem Verschieben der Schlüssel aus dem Dateisystem in Richtung SmarctCard des Nitrokeys beschäftigen, mit dem Konzept der Unterschlüssel vertraut machen!
 +</WRAP>
 +
 +Werfen wir zur genaueren Betrachtung einfach einen Blick in unseren Schlüsselbund. 
 +   $ gpg --list-keys
 +
 +<code>/home/django/.gnupg/pubring.kbx
 +-------------------------------
 +pub   rsa4096 2020-08-30 [SC]
 +      FEFA8BFEC18C32F19968C5EE412BC6B241503EC7
 +uid           [ultimate] Django aka BOfH (Bastard Operator from Hell) <django@nausch.org>
 +sub   rsa4096 2020-08-30 [E]
 +
 +</code>
 +
 +Obwohl wir zuvor "nur einen" //PGP-Schlüssel generiert// generiert hatten, sehen wir nun aber plötzlich zwei Schlüssel. Der eine ist mit dem Wert **pub** gekennzeichnet, hat die Schlüssel-ID **FEFA8BFEC18C32F19968C5EE412BC6B241503EC7** und ist mit "**[SC]**" versehen. Der zweite Schlüssel ist als **ssb** gekennzeichnet und ist mit "**[E]**" markiert. 
 +
 +Beide Schlüssel sehen wir auch, wenn wir uns den Inhalt des secrings anzeigen lassen:
 +   $ gpg --list-secret-keys
 +<code>/home/django/.gnupg/pubring.kbx
 +-------------------------------
 +sec   rsa4096 2020-08-30 [SC]
 +      FEFA8BFEC18C32F19968C5EE412BC6B241503EC7
 +uid           [ultimate] Django aka BOfH (Bastard Operator from Hell) <django@nausch.org>
 +ssb   rsa4096 2020-08-30 [E]
 +
 +</code>
 +
 +  * //**Worin besteht nun der genaue Unterschied?**// \\ Nun, der erste Schlüssel ist der **primäre Signierungs-Schlüssel** und der zweite Schlüssel ist  ein Unterschlüssel für die Verschlüsselung, der **Verschlüsselung-Schlüssel**. \\ \\
 +  * //**Warum nun der ganze Aufstand mit diesem Unterschlüssel?**// \\ Stellen wir uns einmal folgendes Szenario vor: Eines Tagen wollen oder müssen wir den privaten Schlüssel wechseln, da dieser kompromittiert wurde, oder wir stellen fest, dass die ursprünglich gewählte Schlüssellänge nicht mehr unserem gesteigertem Sicherheitsbewusstsein entspricht. Wir können natürlich den alten Schlüssel verwerfen, zurückziehen und löschen, damit dieser unbrauchbar wird. Nur verlieren wir dadurch natürlich sämtliche beglaubigte Unterschriften unserer Kontaktpersonen und Freunde, die ja einen gewissen Vertrauensstatus bezeugen - der Hintergrund zum **[[centos:openpgp_beim_mua#openpgp_versus_s_mime|WoT]]**-Gedanken((**W**eb **o**f **T**rust)). Als Folge daraus müssten wir erneut den ganzen Aufwand mit dem Key-Signing betreiben, was mit unter sehr aufwändig werden könnte! \\ Mit Unterschlüssel müssen wir nicht alles über Bord werden, sondern können z.B. weiterhin die beglaubigten Unterschriften unserer Freunde und Bekannten beibehalten und verwenden. Diese Signatur-Informationen sind, genau so wie die primäre User-ID, mit dem primären Signierungsschlüssel verknüpft! Subkeys selbst haben keine eigene Vertrauensstellung, sprich diese werden nicht selbst signiert. Der grosse Vorteil ist nun, dass wir diese Unterschlüssel für genau spezifizierte Einsatzzwecke definieren und nutzt können: //Verschlüsselung//, //Signierung// oder //Authentifizierung//. Diese Schlüssel können wir nun gezielt erneuern und dann an unsere Kontaktpersonen über den Master-Schlüssel verteilen können. Die Änderungen werden dann automatisch in deren Key-Rings als Aktualisierung des bestehenden Schlüssels übernommen, da die Unterschlüssel mit unserem Primary Signing Key signiert sind, dem unsere Kommunikationspartner ja schon bereits vertrauen.
 +
 +Fragen wir den Status unseres Nitrokey Pro ab, so sehen wir dort am Ende drei Speicherplätze für unterschiedliche Unterschlüssel, genauer gesagt der private Teil der Unterschlüssel, die auf dem Nitrokey Pro gespeichert sind, nämlich den :
 +  * **Signature key**     : Unterschlüssel zum Signieren
 +  * **Encryption key**    : Unterschlüssel zum Verschlüsseln
 +  * **Authentication key**: Unterschlüssel zum Authentifizieren
 +
 +   $ gpg --card-status
 +<code>
 +
 +Reader ...........: 20F0:4109:0000D34DB33F000000000000:0
 +Application ID ...: D27600012701020100066000425D0000
 +Application type .: OpenPGP
 +Version ..........: 2.1
 +Manufacturer .....: ZeitControl
 +Serial number ....: 000034D4
 +Name of cardholder: Django aka Bastard Operator from Hell
 +Language prefs ...: de
 +Salutation .......: Mr.
 +URL of public key : https://keyserver.nausch.org/pks/lookup?op=get&search=0x074ECF6150A6BFED
 +Login data .......: django
 +Signature PIN ....: not forced
 +Key attributes ...: rsa4096 rsa4096 rsa4096
 +Max. PIN lengths .: 32 32 32
 +PIN retry counter : 3 0 3
 +Signature counter : 0
 +Signature key ....: [none]
 +Encryption key....: [none]
 +Authentication key: [none]
 +General key info..: [none]
 +</code>
 +
 +Damit wir nun die drei benötigten Unterschlüssel an die richtige Stelle unseres Nitrokey Pro verschieben können, müssen wir noch ein paar Vorbereitungen treffen:
 +  - Erstellen weiterer Unterschlüssel für die Themen:
 +    - Signierung
 +    - Authentifizierung
 +  - Verschieben der privaten Unterschlüssel aus dem Schlüsselbund, der auf der Festplatte gespeichert waren in die OpenPGP-SmartCard des Nitrokey Pros.
 +  - Verschieben des //primären Signierungs Schlüssel// auf ein sicheres Sicherungsmedium.
 +
 +Die öffentlichen Schlüssel bleiben nach wie vor im Schlüsselbund auf unserer Festplatte //**/home/~/.gnupg/pubring.gpg**// gespeichert, lediglich die privaten Unterschlüssel werden durch Proxy-Einträge im Schlüsselbund ersetzt!
 +
 +Bevor wir nun zum Punkt **1. Erstellen weiterer Unterschlüssel** widmen können rufen wir uns die **ID** des primären Signierungs-Schlüssel in Erinnerung.
 +   $ gpg --list-keys
 +
 +<code>/home/django/.gnupg/pubring.kbx
 +-------------------------------
 +pub   rsa4096 2020-08-30 [SC]
 +      FEFA8BFEC18C32F19968C5EE412BC6B241503EC7
 +uid           [ultimate] Django aka BOfH (Bastard Operator from Hell) <django@nausch.org>
 +sub   rsa4096 2020-08-30 [E]
 +
 +</code>
 +In unserem Konfigurationsbeispiel hier ist dies die Key-ID: **FEFA8BFEC18C32F19968C5EE412BC6B241503EC7**. Zunächst erstellen wir besagten Unterschlüssel zum Signieren:
 +  $ gpg --expert --edit-key D1359446
 +<code>gpg (GnuPG) 2.2.19; Copyright (C) 2019 Free Software Foundation, Inc.
 +This is free software: you are free to change and redistribute it.
 +There is NO WARRANTY, to the extent permitted by law.
 +
 +Secret key is available.
 +
 +sec  rsa4096/412BC6B241503EC7
 +     created: 2020-08-30  expires: never       usage: SC  
 +     trust: ultimate      validity: ultimate
 +ssb  rsa4096/D5D9674D9331F388
 +     created: 2020-08-30  expires: never       usage: E   
 +[ultimate] (1). Django aka BOfH (Bastard Operator from Hell) <django@nausch.org>
 +
 +gpg> </code>
 +
 +Das Erzeugen von Unterschlüssel erfolgt mit hilfe des Befehls ''**addkey**''.
 +
 +  gpg> addkey
 +<code>Please select what kind of key you want:
 +   (3) DSA (sign only)
 +   (4) RSA (sign only)
 +   (5) Elgamal (encrypt only)
 +   (6) RSA (encrypt only)
 +   (7) DSA (set your own capabilities)
 +   (8) RSA (set your own capabilities)
 +  (10) ECC (sign only)
 +  (11) ECC (set your own capabilities)
 +  (12) ECC (encrypt only)
 +  (13) Existing key
 +  (14) Existing key from card
 +Your selection?</code>
 +
 +Da wir einen **RSA**-Unterschlüssel zum Signieren erzeugen möchten, wählen wir hier die Option **''4''**. Bei der Schlüssellänge verwenden wir wie auch schon bei der Erstellung des initialen Schlüsselpaares **4096**; die Laufzeit des Unterschlüssels wählen wir entsprechend gleich oder kürzer wie beim //primären Signierungs-Schlüssel//, in unserem Beispiel also unendlich. 
 +
 +  Your selection? 4
 +<code>RSA keys may be between 1024 and 4096 bits long.
 +What keysize do you want? (3072) 4096
 +Requested keysize is 4096 bits
 +Please specify how long the key should be valid.
 +         0 = key does not expire
 +      <n>  = key expires in n days
 +      <n>w = key expires in n weeks
 +      <n>m = key expires in n months
 +      <n>y = key expires in n years
 +Key is valid for? (0) 
 +Key does not expire at all
 +Is this correct? (y/N) y
 +Really create? (y/N) y </code>
 +
 +{{ :nitrokey:nitropad_060.png?nolink&400 |Bild: Passphrase-Dialog beim Generieren eines neunen PGP(sub)-Keys}}
 +
 +<code>We need to generate a lot of random bytes. It is a good idea to perform
 +some other action (type on the keyboard, move the mouse, utilize the
 +disks) during the prime generation; this gives the random number
 +generator a better chance to gain enough entropy.
 +
 +sec  rsa4096/412BC6B241503EC7
 +     created: 2020-08-30  expires: never       usage: SC  
 +     trust: ultimate      validity: ultimate
 +ssb  rsa4096/D5D9674D9331F388
 +     created: 2020-08-30  expires: never       usage: E   
 +ssb  rsa4096/A6EC2C062AEE3AB8
 +     created: 2020-08-30  expires: never       usage: S   
 +[ultimate] (1). Django aka BOfH (Bastard Operator from Hell) <django@nausch.org>
 +gpg></code>
 +
 +Das Gleiche machen wir nun erneut für unseren Authentifizierungs-Unterschlüssel.
 +   gpg> addkey
 +
 +<code>Please select what kind of key you want:
 +   (3) DSA (sign only)
 +   (4) RSA (sign only)
 +   (5) Elgamal (encrypt only)
 +   (6) RSA (encrypt only)
 +   (7) DSA (set your own capabilities)
 +   (8) RSA (set your own capabilities)
 +  (10) ECC (sign only)
 +  (11) ECC (set your own capabilities)
 +  (12) ECC (encrypt only)
 +  (13) Existing key
 +  (14) Existing key from card
 +Your selection?</code>
 +
 +Für unseren Verschlüsselungs-Unterschlüssel wählen wir nun eben hier entsprechend die Option **8**.
 +
 +  Your selection? 8
 +<code>
 +
 +Possible actions for a RSA key: Sign Encrypt Authenticate 
 +Current allowed actions: Sign Encrypt 
 +
 +   (S) Toggle the sign capability
 +   (E) Toggle the encrypt capability
 +   (A) Toggle the authenticate capability
 +   (Q) Finished
 +
 +Your selection?</code>
 +
 +Uns wir nun angezeigt, dass aktuell Signierung und Verschlüsselung vorausgewählt wurde: **''Current allowed actions: Sign Encrypt''**. Wir wählen nun nacheinander die Optionen für Signierung mit "**S**" und Verschlüsselung mit "**E**" ab und Signierung mit "**A**" an.
 +<code>Your selection? s
 +
 +Possible actions for a RSA key: Sign Encrypt Authenticate 
 +Current allowed actions: Encrypt 
 +
 +   (S) Toggle the sign capability
 +   (E) Toggle the encrypt capability
 +   (A) Toggle the authenticate capability
 +   (Q) Finished
 +
 +Your selection? e
 +
 +Possible actions for a RSA key: Sign Encrypt Authenticate 
 +Current allowed actions: 
 +
 +   (S) Toggle the sign capability
 +   (E) Toggle the encrypt capability
 +   (A) Toggle the authenticate capability
 +   (Q) Finished
 +
 +Your selection? a
 +
 +Possible actions for a RSA key: Sign Encrypt Authenticate 
 +Current allowed actions: Authenticate 
 +
 +   (S) Toggle the sign capability
 +   (E) Toggle the encrypt capability
 +   (A) Toggle the authenticate capability
 +   (Q) Finished
 +
 +Your selection?</code>
 +
 +An der nun definierten Option **''Current allowed actions: Authenticate''** sehen wir, dass nun nachfolgend ein Authentifizierungs-Unterschlüssel generiert werden soll. Mit **Q** Verlassen wir diesen Dialog und generieren den besagten Authentifizierungs-Unterschlüssel.
 +  Your selection? q
 +<code>RSA keys may be between 1024 and 4096 bits long.
 +What keysize do you want? (3072) 4096
 +Requested keysize is 4096 bits
 +Please specify how long the key should be valid.
 +         0 = key does not expire
 +      <n>  = key expires in n days
 +      <n>w = key expires in n weeks
 +      <n>m = key expires in n months
 +      <n>y = key expires in n years
 +Key is valid for? (0) 
 +Key does not expire at all
 +Is this correct? (y/N) y
 +Really create? (y/N) y </code>
 +
 +Zum Generieren des Schlüssels werden wir um Bestätigung der Passphrase gebeten.
 +
 +{{ :nitrokey:nitropad_060.png?nolink&400 |Bild: Passphrase-Dialog beim Generieren eines neunen PGP(sub)-Keys}}
 +
 +<code>We need to generate a lot of random bytes. It is a good idea to perform
 +some other action (type on the keyboard, move the mouse, utilize the
 +disks) during the prime generation; this gives the random number
 +generator a better chance to gain enough entropy.
 +
 +sec  rsa4096/412BC6B241503EC7
 +     created: 2020-08-30  expires: never       usage: SC  
 +     trust: ultimate      validity: ultimate
 +ssb  rsa4096/D5D9674D9331F388
 +     created: 2020-08-30  expires: never       usage: E   
 +ssb  rsa4096/A6EC2C062AEE3AB8
 +     created: 2020-08-30  expires: never       usage: S   
 +ssb  rsa4096/28B0CB362EC9939D
 +     created: 2020-08-30  expires: never       usage: A   
 +[ultimate] (1). Django aka BOfH (Bastard Operator from Hell) <django@nausch.org>
 +
 +gpg>
 +</code>
 +
 +GnuPG listet nun den Primary Schlüssel zum Signieren und alle Unterschlüssel auf mit dem jeweiligen Verwendungszweck **usage** auf. **''E''** steht für Verschlüsseln, **''S''** für Signieren und **''A''** für Athentifizierung.
 +
 +Zu guter letzt speichern wir nun mit dem Befehl **save** unsere gerade erstellen Unterschlüssel im Schlüsselspeicher auf der Festplatte ab.
 +  gpg> save
 +
 +Fragen wir nun erneut den Schlüsselbund mit den secret-keys ab sehen wir nun unsere drei Unterschlüssel.
 +   $ gpg --list-secret-keys
 +<code>/home/django/.gnupg/pubring.kbx
 +-------------------------------
 +sec   rsa4096 2020-08-30 [SC]
 +      FEFA8BFEC18C32F19968C5EE412BC6B241503EC7
 +uid           [ultimate] Django aka BOfH (Bastard Operator from Hell) <django@nausch.org>
 +ssb   rsa4096 2020-08-30 [E]
 +ssb   rsa4096 2020-08-30 [S]
 +ssb   rsa4096 2020-08-30 [A]
 +
 +</code>
 +
 +== Schlüssel in die ChipCard des Nitrokey Pro verschieben == 
 +Nun werden wir die vorhin generierten Schlüssel an Ort und Stelle in die SmartCard des Nitrokey Pro verschieben. Hierzu verwenden wir den Befehl **''keytocard''** des Programms **gpg**. Wie schon beim **[[#pgp-unterschluessel_-_subkeys|Generieren der Unterschlüssel]]** müssen wir angeben, welche **primäre Schlüssel-ID** bearbeitet oder genauer gesagt verschoben werden soll. In unserem Konfigurationsbeispiel ist das die ID **FEFA8BFEC18C32F19968C5EE412BC6B241503EC7**.
 +   $ gpg --edit-key FEFA8BFEC18C32F19968C5EE412BC6B241503EC7
 +
 +<code>gpg (GnuPG) 2.2.19; Copyright (C) 2019 Free Software Foundation, Inc.
 +This is free software: you are free to change and redistribute it.
 +There is NO WARRANTY, to the extent permitted by law.
 +
 +Secret key is available.
 +
 +sec  rsa4096/412BC6B241503EC7
 +     created: 2020-08-30  expires: never       usage: SC  
 +     trust: ultimate      validity: ultimate
 +ssb  rsa4096/D5D9674D9331F388
 +     created: 2020-08-30  expires: never       usage: E   
 +ssb  rsa4096/A6EC2C062AEE3AB8
 +     created: 2020-08-30  expires: never       usage: S   
 +ssb  rsa4096/28B0CB362EC9939D
 +     created: 2020-08-30  expires: never       usage: A   
 +[ultimate] (1). Django aka BOfH (Bastard Operator from Hell) <django@nausch.org>
 +
 +gpg></code>
 +
 +Für später merken wir uns nun in Welcher Reichenfolge die Unterschlüssel aufgelistet werden bzw. welche Key-ID zu welcher Aktion gehört. Die Key-ID **0** ist die des primären Signierungs-Schlüssel!
 +  * Sub-Key **1** - **D5D9674D9331F388** - **E** = encrypt = verschlüsseln
 +  * Sub-Key **2** - **A6EC2C062AEE3AB8** - **S** = sign = signieren
 +  * Sub-Key **3** - **28B0CB362EC9939D** - **A** = authorize = authentifizieren
 +
 +gpg> </code>
 +Da wir die privaten Schlüssel unserer drei Unterschlüssel verschieben wollen, wechseln wir mikt dem Command **''toggle''** von der Ansicht der öffentlichen in die Ansicht der privaten Schlüssel.
 +  gpg> toggle
 +
 +<code>
 +sec  rsa4096/412BC6B241503EC7
 +     created: 2020-08-30  expires: never       usage: SC  
 +     trust: ultimate      validity: ultimate
 +ssb  rsa4096/D5D9674D9331F388
 +     created: 2020-08-30  expires: never       usage: E   
 +ssb  rsa4096/A6EC2C062AEE3AB8
 +     created: 2020-08-30  expires: never       usage: S   
 +ssb  rsa4096/28B0CB362EC9939D
 +     created: 2020-08-30  expires: never       usage: A   
 +[ultimate] (1). Django aka BOfH (Bastard Operator from Hell) <django@nausch.org>
 +
 +gpg></code>
 +
 +Als erstes verschieben wir den privaten Verschlüsselungs-Unterschlüssel. Hierzu wählen wir diesen mit Eingabe von "1" ein. Die Auswahl wird uns dann durch den ** * ** angezeigt.
 +
 +  gpg> key 1
 +<code>
 +sec  rsa4096/412BC6B241503EC7
 +     created: 2020-08-30  expires: never       usage: SC  
 +     trust: ultimate      validity: ultimate
 +ssb* rsa4096/D5D9674D9331F388
 +     created: 2020-08-30  expires: never       usage: E   
 +ssb  rsa4096/A6EC2C062AEE3AB8
 +     created: 2020-08-30  expires: never       usage: S   
 +ssb  rsa4096/28B0CB362EC9939D
 +     created: 2020-08-30  expires: never       usage: A   
 +[ultimate] (1). Django aka BOfH (Bastard Operator from Hell) <django@nausch.org>
 +
 +gpg></code>
 +
 +Nun verschieben wir den ausgewählten Schlüssel in die SmartCard des Nitrokey mit dem Command **''keytocard''**. Als Ziel wählen wir dann richtiger Weise die Option **''2''** = //**Encryption key**// aus
 +  gpg> keytocard
 +
 +<code>Please select where to store the key:
 +   (2) Encryption key
 +Your selection? 2</code>
 +
 +Zum Entsperren des PGP-Schlüssels werden wir um Bestätigung der Passphrase gebeten.
 +
 +{{ :nitrokey:nitropad_060.png?nolink&400 |Bild: Passphrase-Dialog beim Generieren eines neunen PGP(sub)-Keys}}
 +
 +Zum Speichern des Schlüssels auf der OpenPGP-Smartcard des Nitrokey Pro erfolgt anschließend die Abfrage/Eingabe der ADMIN-PIN.
 +
 +{{ :nitrokey:nitropad_058.png?nolink&275 |Bild: Admin-PIN Entry Dialog}}
 +
 +<code>
 +sec  rsa4096/412BC6B241503EC7
 +     created: 2020-08-30  expires: never       usage: SC  
 +     trust: ultimate      validity: ultimate
 +ssb* rsa4096/D5D9674D9331F388
 +     created: 2020-08-30  expires: never       usage: E   
 +ssb  rsa4096/A6EC2C062AEE3AB8
 +     created: 2020-08-30  expires: never       usage: S   
 +ssb  rsa4096/28B0CB362EC9939D
 +     created: 2020-08-30  expires: never       usage: A   
 +[ultimate] (1). Django aka BOfH (Bastard Operator from Hell) <django@nausch.org>
 +
 +gpg></code>
 +
 +Als nächstes verschieben wir den privaten Signierungs-Unterschlüssel aus, in dem wir erst den bereits ausgewählten Verschlüsselungs-Key abwählen und dann den Signierungs-Key anwählen.
 +  gpg> key 1
 +<code>
 +sec  rsa4096/412BC6B241503EC7
 +     created: 2020-08-30  expires: never       usage: SC  
 +     trust: ultimate      validity: ultimate
 +ssb  rsa4096/D5D9674D9331F388
 +     created: 2020-08-30  expires: never       usage: E   
 +ssb  rsa4096/A6EC2C062AEE3AB8
 +     created: 2020-08-30  expires: never       usage: S   
 +ssb  rsa4096/28B0CB362EC9939D
 +     created: 2020-08-30  expires: never       usage: A   
 +[ultimate] (1). Django aka BOfH (Bastard Operator from Hell) <django@nausch.org>
 +
 +gpg></code>
 +  gpg> key 2
 +<code>
 +sec  rsa4096/412BC6B241503EC7
 +     created: 2020-08-30  expires: never       usage: SC  
 +     trust: ultimate      validity: ultimate
 +ssb  rsa4096/D5D9674D9331F388
 +     created: 2020-08-30  expires: never       usage: E   
 +ssb* rsa4096/A6EC2C062AEE3AB8
 +     created: 2020-08-30  expires: never       usage: S   
 +ssb  rsa4096/28B0CB362EC9939D
 +     created: 2020-08-30  expires: never       usage: A   
 +[ultimate] (1). Django aka BOfH (Bastard Operator from Hell) <django@nausch.org>
 +
 +gpg></code>
 +
 +Nun verschieben wir den privaten Signierungs-Unterschlüssel in Richtung SmartCard des Nitrokey Pro. Hier wählen wir nun die **''1''** für //**Signature key**// aus.
 +  gpg> keytocard
 +<code>Please select where to store the key:
 +   (1) Signature key
 +   (3) Authentication key
 +Your selection?  1</code>
 +Zum Entsperren des PGP-Schlüssels werden wir um Bestätigung der Passphrase gebeten.
 +
 +{{ :nitrokey:nitropad_060.png?nolink&400 |Bild: Passphrase-Dialog beim Generieren eines neunen PGP(sub)-Keys}}
 +
 +<code>
 +
 +sec  rsa4096/412BC6B241503EC7
 +     created: 2020-08-30  expires: never       usage: SC  
 +     trust: ultimate      validity: ultimate
 +ssb  rsa4096/D5D9674D9331F388
 +     created: 2020-08-30  expires: never       usage: E   
 +ssb* rsa4096/A6EC2C062AEE3AB8
 +     created: 2020-08-30  expires: never       usage: S   
 +ssb  rsa4096/28B0CB362EC9939D
 +     created: 2020-08-30  expires: never       usage: A   
 +[ultimate] (1). Django aka BOfH (Bastard Operator from Hell) <django@nausch.org>
 +
 +gpg></code>
 +
 +Zu guter Letzt fehlt nun noch unser Authentifizierungs-Unterschlüssel. Wir wählen also wieder den Schlüssel **''2''** ab und den Schlüssel **''3''** aus.
 +  gpg> key 2
 +<code>
 +sec  rsa4096/412BC6B241503EC7
 +     created: 2020-08-30  expires: never       usage: SC  
 +     trust: ultimate      validity: ultimate
 +ssb  rsa4096/D5D9674D9331F388
 +     created: 2020-08-30  expires: never       usage: E   
 +ssb  rsa4096/A6EC2C062AEE3AB8
 +     created: 2020-08-30  expires: never       usage: S   
 +ssb  rsa4096/28B0CB362EC9939D
 +     created: 2020-08-30  expires: never       usage: A   
 +[ultimate] (1). Django aka BOfH (Bastard Operator from Hell) <django@nausch.org>
 +
 +gpg></code>
 +  gpg> key 3
 +<code>
 +sec  rsa4096/412BC6B241503EC7
 +     created: 2020-08-30  expires: never       usage: SC  
 +     trust: ultimate      validity: ultimate
 +ssb  rsa4096/D5D9674D9331F388
 +     created: 2020-08-30  expires: never       usage: E   
 +ssb  rsa4096/A6EC2C062AEE3AB8
 +     created: 2020-08-30  expires: never       usage: S   
 +ssb* rsa4096/28B0CB362EC9939D
 +     created: 2020-08-30  expires: never       usage: A   
 +[ultimate] (1). Django aka BOfH (Bastard Operator from Hell) <django@nausch.org>
 +
 +gpg></code>
 +
 +Nun verschieben wir den privaten Authentifizierungs-Unterschlüssel in Richtung SmartCard des Nitrokey Pro. Hier wählen wir nun die **''3''** für //**Authentication key**// aus.
 +  gpg> keytocard
 +<code>Please select where to store the key:
 +   (3) Authentication key
 +Your selection? 3</code>
 +
 +Zum Entsperren des PGP-Schlüssels werden wir um Bestätigung der Passphrase gebeten.
 +
 +{{ :nitrokey:nitropad_060.png?nolink&400 |Bild: Passphrase-Dialog beim Generieren eines neunen PGP(sub)-Keys}}
 +
 +<code>
 +sec  rsa4096/412BC6B241503EC7
 +     created: 2020-08-30  expires: never       usage: SC  
 +     trust: ultimate      validity: ultimate
 +ssb  rsa4096/D5D9674D9331F388
 +     created: 2020-08-30  expires: never       usage: E   
 +ssb  rsa4096/A6EC2C062AEE3AB8
 +     created: 2020-08-30  expires: never       usage: S   
 +ssb* rsa4096/28B0CB362EC9939D
 +     created: 2020-08-30  expires: never       usage: A   
 +[ultimate] (1). Django aka BOfH (Bastard Operator from Hell) <django@nausch.org>
 +
 +gpg></code>
 +
 +Zum Abschluss speichern wir nun unsere Änderungen im lokalen key-ring mit dem Befehl **''save''**.
 +  gpg> save
 +
 +Wenn wir jetzt den Kartenstatus abfragen, werden unsere drei Unterschlüssel entsprechend mit angezeigt.
 +   $ gpg --card-status
 +
 +<code>Reader ...........: 20F0:4109:0000D34DB33F000000000000:0
 +Application ID ...: D27600012701020100066000425D0000
 +Application type .: OpenPGP
 +Version ..........: 2.1
 +Manufacturer .....: ZeitControl
 +Serial number ....: 000034D4
 +Name of cardholder: Django aka Bastard Operator from Hell
 +Language prefs ...: de
 +Salutation .......: Mr.
 +URL of public key : https://keyserver.nausch.org/pks/lookup?op=get&search=0x074ECF6150A6BFED
 +Login data .......: django
 +Signature PIN ....: not forced
 +Key attributes ...: rsa4096 rsa4096 rsa4096
 +Max. PIN lengths .: 32 32 32
 +PIN retry counter : 3 0 3
 +Signature counter : 0
 +Signature key ....: 41A8 4ABC 8C4D D712 49E3  DC6E A6EC 2C06 2AEE 3AB8
 +      created ....: 2020-08-30 12:01:28
 +Encryption key....: 1D03 3786 F875 686B 3423  9B82 D5D9 674D 9331 F388
 +      created ....: 2020-08-30 11:31:04
 +Authentication key: 140B 5460 7269 96FE 98F7  C9AA 28B0 CB36 2EC9 939D
 +      created ....: 2020-08-30 12:07:06
 +General key info..: sub  rsa4096/A6EC2C062AEE3AB8 2020-08-30 Django aka BOfH (Bastard Operator from Hell) <django@nausch.org>
 +sec   rsa4096/412BC6B241503EC7  created: 2020-08-30  expires: never     
 +ssb>  rsa4096/D5D9674D9331F388  created: 2020-08-30  expires: never     
 +                                card-no: 0005 000034D4
 +ssb>  rsa4096/A6EC2C062AEE3AB8  created: 2020-08-30  expires: never     
 +                                card-no: 0005 000034D4
 +ssb>  rsa4096/28B0CB362EC9939D  created: 2020-08-30  expires: never     
 +                                card-no: 0005 000034D4
 +</code>
 +
 +== Schlüssel aus dem lokalen Schlüsselspeicher entfernen == 
 +Löschen wir nun den kompletten Schlüssel aus der lokalen Schlüsseldatei, können wir folgenden Befehl verwenden.
 +   $ gpg --delete-secret-key django@nausch.org
 +<code>gpg (GnuPG) 2.2.19; Copyright (C) 2019 Free Software Foundation, Inc.
 +This is free software: you are free to change and redistribute it.
 +There is NO WARRANTY, to the extent permitted by law.
 +
 +
 +sec  rsa4096/412BC6B241503EC7 2020-08-30 Django aka BOfH (Bastard Operator from Hell) <django@nausch.org>
 +
 +Delete this key from the keyring? (y/N) y
 +This is a secret key! - really delete? (y/N) y
 +</code>
 +
 +<WRAP center round alert 95%>
 +__**Doch Achtung:**__
 +Hier wird der komplette Schlüssel gelöscht, also den **privaten Primären Signing Key** und nicht nur die Proxy-Einträge! Dies kann zu Problemen bei der späteren Verwendung des Nitrokey Pro auf der Konsole führen, da das gpg-Programm versucht den Schlüssel im Schlüsselbund zu finden!
 +</WRAP>
 +
 +Der gpg-Befehl ''**%%--%%delete-secret-keys**'' hat als Bezugspunkt den primären Signierungsschlüssel und würde beim entfernen dieses Schlüssels natürlich auch die Unterschlüssel entfernen. Da wir nur den privaten primären Signierungsschlüssel aus dem Schlüsselbund löschen wollen, exportieren wir die privaten Unterschlüssel, bevor wir den privaten Primary Signing Key löschen und werden diese dann anschließend wieder importieren.
 +
 +Wir exportieren also erst einmal die Unterschlüssel und legen diese in einer lokalen Datei ab. Zunächst holen wir uns aber noch die Schlüssel-IDs da wir diese beim Exportieren eigens angeben müssen.
 +   $ gpg --edit-key FEFA8BFEC18C32F19968C5EE412BC6B241503EC7
 +<code>This is free software: you are free to change and redistribute it.
 +There is NO WARRANTY, to the extent permitted by law.
 +
 +Secret key is available.
 +
 +sec  rsa4096/412BC6B241503EC7
 +     created: 2020-08-30  expires: never       usage: SC  
 +     trust: ultimate      validity: ultimate
 +ssb  rsa4096/D5D9674D9331F388
 +     created: 2020-08-30  expires: never       usage: E   
 +     card-no: 0005 000034D4
 +ssb  rsa4096/A6EC2C062AEE3AB8
 +     created: 2020-08-30  expires: never       usage: S   
 +     card-no: 0005 000034D4
 +ssb  rsa4096/28B0CB362EC9939D
 +     created: 2020-08-30  expires: never       usage: A   
 +     card-no: 0005 000034D4
 +[ultimate] (1). Django aka BOfH (Bastard Operator from Hell) <django@nausch.org>
 +
 +gpg>
 +</code>
 +Den Editierdialog verlassen wir mit dem Command **''quit''**.
 +  gpg> quit
 +
 +Nun exportieren wir die Unterschlüssel in die Datei **''subkeys''** mit Hilfe folgenden Aufrufs, bei dem wir die IDs der Unterschlüssel gefolgt von einem **!** jeweils angeben:
 +   $ gpg -o subkeys --export-secret-subkeys 564BA287! ACCE2639! EC65030E!
 +
 +Nun löschen wir den primären Signierungsschlüssel inkl. der Unterschlüssel.
 +   $ gpg --delete-secret-key django@nausch.org
 +<code>gpg (GnuPG) 2.2.19; Copyright (C) 2019 Free Software Foundation, Inc.
 +This is free software: you are free to change and redistribute it.
 +There is NO WARRANTY, to the extent permitted by law.
 +
 +
 +sec  rsa4096/412BC6B241503EC7 2020-08-30 Django aka BOfH (Bastard Operator from Hell) <django@nausch.org>
 +
 +Delete this key from the keyring? (y/N) y
 +This is a secret key! - really delete? (y/N) y</code>
 +
 +Ein erneuter Aufruf des privaten Schlüsselspeichers zeigt und, dass dort nun keine Einträge mehr vorhanden sind.
 +   $ gpg --list-secret-keys
 +
 +Nun importieren wir wieder die zuvor gesicherten privaten Unterschlüssel
 +   $ gpg --import subkeys
 +<code>gpg: key 412BC6B241503EC7: "Django aka BOfH (Bastard Operator from Hell) <django@nausch.org>" not changed
 +gpg: To migrate 'secring.gpg', with each smartcard, run: gpg --card-status
 +gpg: key 412BC6B241503EC7: secret key imported
 +gpg: Total number processed: 1
 +gpg:              unchanged: 1
 +gpg:       secret keys read: 1
 +</code>
 +
 +Lassen wir uns nun den Inhalt des privaten Schlüsselbundes anzeigen, sehen wir die zurückgesicherten Unterschlüssel wieder.
 +   $ gpg --edit-key FEFA8BFEC18C32F19968C5EE412BC6B241503EC7
 +
 +<code>gpg (GnuPG) 2.2.19; Copyright (C) 2019 Free Software Foundation, Inc.
 +This is free software: you are free to change and redistribute it.
 +There is NO WARRANTY, to the extent permitted by law.
 +
 +
 +pub  rsa4096/412BC6B241503EC7
 +     created: 2020-08-30  expires: never       usage: SC  
 +     trust: ultimate      validity: ultimate
 +sub  rsa4096/D5D9674D9331F388
 +     created: 2020-08-30  expires: never       usage: E   
 +sub  rsa4096/A6EC2C062AEE3AB8
 +     created: 2020-08-30  expires: never       usage: S   
 +sub  rsa4096/28B0CB362EC9939D
 +     created: 2020-08-30  expires: never       usage: A   
 +[ultimate] (1). Django aka BOfH (Bastard Operator from Hell) <django@nausch.org>
 +
 +gpg></code>
 +
 +Den Dialog verlassen wir wieder mit dem Connamd **''quit''**.
 +
 +Zu guter letzt vernichten wir die Datei mit den gesicherten privaten Unterschlüsseln.
 +   $ shred --zero --remove subkeys
 +
 +
 +
 +
  
 === Rückruf-Zertifikat erstellen === === Rückruf-Zertifikat erstellen ===
Zeile 679: Zeile 1316:
 pub   rsa4096 2020-08-29 [S] pub   rsa4096 2020-08-29 [S]
       D7ACC16061ABF3C6E14B1C3856D31D76E0C812E8       D7ACC16061ABF3C6E14B1C3856D31D76E0C812E8
-uid          Django aka Bastard Operator from Hell <django@mailserver.guru>+uid          Django aka Bastard Operator from Hell <django@nausch.org>
  
 A revocation certificate is a kind of "kill switch" to publicly A revocation certificate is a kind of "kill switch" to publicly
Zeile 730: Zeile 1367:
 pub   rsa4096 2020-08-29 [SC] pub   rsa4096 2020-08-29 [SC]
       D7ACC16061ABF3C6E14B1C3856D31D76E0C812E8       D7ACC16061ABF3C6E14B1C3856D31D76E0C812E8
-uid           [ultimate] Django aka Bastard Operator from Hell <django@mailserver.guru+uid           [ultimate] Django aka Bastard Operator from Hell <django@nausch.org
-sig 3        56D31D76E0C812E8 2020-08-29  Django aka Bastard Operator from Hell <django@mailserver.guru>+sig 3        56D31D76E0C812E8 2020-08-29  Django aka Bastard Operator from Hell <django@nausch.org>
 sub   rsa4096 2020-08-29 [A] sub   rsa4096 2020-08-29 [A]
-sig          56D31D76E0C812E8 2020-08-29  Django aka Bastard Operator from Hell <django@mailserver.guru>+sig          56D31D76E0C812E8 2020-08-29  Django aka Bastard Operator from Hell <django@nausch.org>
 sub   rsa4096 2020-08-29 [E] sub   rsa4096 2020-08-29 [E]
-sig          56D31D76E0C812E8 2020-08-29  Django aka Bastard Operator from Hell <django@mailserver.guru>+sig          56D31D76E0C812E8 2020-08-29  Django aka Bastard Operator from Hell <django@nausch.org>
  
 </code> </code>
Zeile 742: Zeile 1379:
    $ gpg --gen-revoke D7ACC16061ABF3C6E14B1C3856D31D76E0C812E8    $ gpg --gen-revoke D7ACC16061ABF3C6E14B1C3856D31D76E0C812E8
  
-<code>sec  rsa4096/56D31D76E0C812E8 2020-08-29 Django aka Bastard Operator from Hell <django@mailserver.guru>+<code>sec  rsa4096/56D31D76E0C812E8 2020-08-29 Django aka Bastard Operator from Hell <django@nausch.org>
  
 Create a revocation certificate for this key? (y/N)</code> Create a revocation certificate for this key? (y/N)</code>
Zeile 826: Zeile 1463:
  
    $ gpg --import revocation.crt     $ gpg --import revocation.crt 
-<code>gpg: key 56D31D76E0C812E8: "Django aka Bastard Operator from Hell <django@mailserver.guru>" revocation certificate imported+<code>gpg: key 56D31D76E0C812E8: "Django aka Bastard Operator from Hell <django@nausch.org>" revocation certificate imported
 gpg: Total number processed: 1 gpg: Total number processed: 1
 gpg:    new key revocations: 1 gpg:    new key revocations: 1
Zeile 844: Zeile 1481:
 pub   rsa4096 2020-08-29 [SC] [revoked: 2020-08-30] pub   rsa4096 2020-08-29 [SC] [revoked: 2020-08-30]
       D7ACC16061ABF3C6E14B1C3856D31D76E0C812E8       D7ACC16061ABF3C6E14B1C3856D31D76E0C812E8
-rev          56D31D76E0C812E8 2020-08-30  Django aka Bastard Operator from Hell <django@mailserver.guru>+rev          56D31D76E0C812E8 2020-08-30  Django aka Bastard Operator from Hell <django@nausch.org>
       reason for revocation: Key is no longer used       reason for revocation: Key is no longer used
          revocation comment: Dies war nur ein Demonstrationsschlüssel!          revocation comment: Dies war nur ein Demonstrationsschlüssel!
-uid           [ revoked] Django aka Bastard Operator from Hell <django@mailserver.guru+uid           [ revoked] Django aka Bastard Operator from Hell <django@nausch.org
-sig 3        56D31D76E0C812E8 2020-08-29  Django aka Bastard Operator from Hell <django@mailserver.guru>+sig 3        56D31D76E0C812E8 2020-08-29  Django aka Bastard Operator from Hell <django@nausch.org>
  
 </code> </code>
Zeile 938: Zeile 1575:
 === Export des public-key auf einen Keyserver === === Export des public-key auf einen Keyserver ===
 Den zuvor exportierten public key können wir nun in einem WEB-Formular auf einem [[http://gpg-keyserver.de/|Keyserver]] manuell eintragen. Oder wir exportieren diesen direkt aus dem öffentlichen Schlüsselring: Den zuvor exportierten public key können wir nun in einem WEB-Formular auf einem [[http://gpg-keyserver.de/|Keyserver]] manuell eintragen. Oder wir exportieren diesen direkt aus dem öffentlichen Schlüsselring:
-   $ gpg %%--%%keyserver keys.openpgp.org %%--%%send-key 4F9FC2E6F458253C+   $ gpg --keyserver keys.openpgp.org --send-key 4F9FC2E6F458253C
  
   gpg: sending key 4F9FC2E6F458253C to hkp server keys.gnupg.net   gpg: sending key 4F9FC2E6F458253C to hkp server keys.gnupg.net
Zeile 953: Zeile 1590:
  
  
-/* # apt-get install enigmail +==== Secure Shell (SSH) ==== 
  
-bei Thunderbird 68.10.(64-bit) nicht via apt sondern via Thunderbird-addon!+<WRAP center round important 90%> 
 +Ob man in Zeiten von Überwachungsphantasten in Unternehmen und vor allem auch bei einer NSA oder BND, noch **[[http://www.golem.de/news/elliptische-kurven-die-herkunft-der-nist-kurven-1309-101567.html|RSA-Schlüssel]]** einsetzen kann und mag, muss natürlich jeder Admin für sich selbst entscheiden.  
 + 
 +Der Sicherheitsguru Bruce Schneier hat in seinem **[[https://www.schneier.com/blog/archives/2013/09/the_nsa_is_brea.html#c1675929|Blog]]** hierzu eine eindeutige Aussage getätigt:  
 + 
 +<wrap em>//"On the crypto bits in your guardian piece, I found especially interesting that you suggest classic discrete log crypto over ecc. I want to ask if you could elaborate more on that." __I no longer trust the constants. I believe the NSA has manipulated them through their relationships with industry.__//</wrap> 
 + 
 +**[[https://de.wikipedia.org/wiki/Curve25519|EED25519]]** ist ein Elliptic Curve Signature Schema, welches beste Sicherheit bei vertretbaren Aufwand verspricht, als ECDSA oder DSA dies der Fall ist. Zur Auswahl sicherer kryptografischer Kurven bei der //Elliptic-Curve Cryptography// findet man auf der Seite [[https://safecurves.cr.yp.to/|hier]] hilfreiche Erklärungen und eine Gegenüberstellung der möglichen verschiedenen Alternativen. 
 + 
 +Mit Hinblick auf die möglichen Unsicherheiten im Bezug auf die [[https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Publikationen/TechnischeRichtlinien/TR02102/BSI-TR-02102.pdf|RSA-Schlüssellänge]]((BSI TR-02102-1 "Kryptographische Verfahren: Empfehlungen und Schlüssellängen" Version: 2020-01 vom 02.04.2020)) werden wir uns ersteinmal nicht mit diesen Defaultwerten begnügen, sondern die maximale RSA-Schlüssell#nge von 4096 bit verwenden. /*später noch eingehend mit der Erstellung eines [[start#ed25519-schluessel_generieren|ED25519]] beschäftigen!*/ 
 +</WRAP> 
 + 
 +Will oder muss man weiterhin auf RSA-Schlüssel zurückgreifen, ist wenigstens auf eine ausreichend große Schlüssellänge zurück zu greifen! Bei der initialen Einrichtung unseres Nitrokey Pro hbaen wir bei der **[[#schluesseleigenschaften_definieren|Definition der Schlüsseleigenschaften]]** bereits einen **RSA**-Key mit einer Länge von **4096 bit** definiert. In aller Regel wird dies entsprechend ausreichen. 
 + 
 +=== SSH Client vorbereiten === 
 +/* 
 +=== SSH-Client konfigurieren === 
 +Zur einfacheren Administration unserer Remote-Hosts bedienen wir uns einer User-Konfigurationsdatei im Homeverzeichnis **''~/.ssh''** unseres Admin-Useraccouns.  
 +   $ vim ~/.ssh/config 
 + 
 +<file bash ~/.ssh/config>Host voip-sc 
 +     Hostname 10.20.30.40 
 +     Port 9922 
 +     User django 
 +     Protocol 2 
 +     PKCS11Provider /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so 
 + 
 +</file> 
 + 
 +Die passende **''pkcs#11''** Provider-Library befindet sich im PAket **opensc** welches wir uns nun noch installieren, falle diese Datei noch nicht installiert wurde. 
 +   $ sudo apt install opensc
  
 */ */
 +Damit wir beim Verbindungsaufbau auf den Authentication Key zugreifen können, müssen wir unseren Client entsprechend vorbereiten.
 +
 +Hierzu aktivieren wir zunächst die Option ''**enable-ssh-support**'' in der Konfigurationsdatei //**~/.gnupg/gpg-agent.conf
 +**// des GPG-Agenten.
 +   $ vim ~/.gnupg/gpg-agent.conf
 +<file bash ~/.gnupg/gpg-agent.conf># File re-created by pEp
 +# See backup in '/home/django/.gnupg/gpg-agent.conf.1.pep.bkp'
 +
 +# File re-created by pEp
 +# See backup in '/home/django/.gnupg/gpg-agent.conf.0.pep.bkp'
 +
 +default-cache-ttl 300
 +max-cache-ttl 999999
 +
 +# Django : 2020-08-05
 +#          SSH-Unterstützung beim gnupg-agent aktiviert 
 +enable-ssh-support</file>
 +
 +Anschließend müssen wir noch die Datei //**~/.bashrc**// erweitern, damit der **SSH_AUTH_SOCK** für den Zugriff des SSH-Schlüssels auf dem Nitrokey Start genutzt werden kann.
 +   $ vim ~/.bashrc
 +<file bash ~/.bashrc># .bashrc
 +
 +# Source global definitions
 +if [ -f /etc/bashrc ]; then
 +        . /etc/bashrc
 +fi
 +
 +# User specific environment
 +PATH="$HOME/.local/bin:$HOME/bin:$PATH"
 +export PATH
 +
 +# Uncomment the following line if you don't like systemctl's auto-paging feature:
 +# export SYSTEMD_PAGER=
 +
 +# User specific aliases and functions
 +
 +# Django : 2020-08-05
 +#          Definition des SSH_AUTH_SOCK für den Zugriff des SSH-Schlüssels auf dem Nitrokey Start
 +unset SSH_AGENT_PID
 +        if [ "${gnupg_SSH_AUTH_SOCK_by:-0}" -ne $$ ]; then
 +        export SSH_AUTH_SOCK="$(gpgconf --list-dirs agent-ssh-socket)"
 +fi</file>
 +
 +Damit unsere Änderungen aktiv werden, müssen wir nun zum Schluss noch den **pgp-agent** restarten bzw. einen Neustart des Clients erwirken. Der Einfachheit halber für den pragmatischen weg und melden uns einmal von unserer X-Session an unserem Clientrechner ab und wieder an!
 +
 +=== Public-Key des RSA4096-Keys für SSH exportieren ===
 +Für den Zugriff auf unser Ziel-System mit Hilfe der SSH  benötigen wir noch den öffentlichen Schlüssel unseres Authentication Keys, den wir nun exportieren werden.
 +Zunächst besorgen wir uns die betreffende Schlüsselkennung des Autentication Keys, genauer gesagt die 4 letzten Zahlenreihen des nachfolgenden Aufrufs.
 +   $ gpg --card-status | grep Authentication\ key
 +
 +  Authentication key: 765D 1F7C 8AF0 1360 30FF  FB20 872B 620E 5C5D 1F71
 +
 +In diesem Konfigurationsbeispiel ist die Schlüssel-ID des Autentication Keys also die Nummer ''**872B620E5C5D1F71**'' (also die vier letzten vierer Blöcke).
 +
 +Nun exportieren wir den öffentlichen Schlüssel und schreiben diesen in eine separate Datei.
 +   $ $ gpg --export-ssh-key 872B620E5C5D1F71  >> ~/.ssh/872B620E5C5D1F71.pub
 +
 +Der Öffentliche Schlüssel in diesen Konfigurationsbeispiel lautet also:
 +   $ cat ~/.ssh/872B620E5C5D1F71.pub
 +
 +  ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCa1OmylijwG9NXLN7OukmiZAtITHOFkEdb4ztmgL87h+Bn4PbEvMcErbXqCEtLTZK8IQYg+7JU1/Nw+FJyqjk2PAaCnrdEUm8aLRGS1/RPv6MCtbVFkqjVO6mp+PDfPURcMKeJrNVIYdJHmQO7UBLCUKCm8HNrPGEZDrOoN0jvxLSss1Cgu30d8eu3TZmAZBt+kHpUeIuovJD6kGHDZk5MVoDWz+w2/f6AisVhnNTND+D7cLwFpDL7aFOZd1CI6a3pIOc1V7dWnWSYtvJWukNbeh1J0cm04QK8e2L5+A7PmdxqXGXBo6U1al4XFb55I51BYDblkc6h5KRbSDUhXlfD8Iaqrq1lR9cMURYfLovnk5botf7CcMZh/pyj6g1xgkqaddS9m5f7mBEitSmOCAAjHXpxkienwT7DidbMLhUJ+uUFRx2XhjQWAep2l+ZM4FRljFllAGETzxVFR/S7U1fzqU2VF+u5XIh1vGi4MdPKHDtmU1gLBHBsvpsYHUz2AR7Q5rUFKHqpY+24iDRYJp//HrBRkLNNPFYAzEfX/WCk8znuX67vloG7i4vlVowQmiCBN2E3gv3Z+liPYLaKbfmS35+3LcxuQA/nwW/gW9SbGt75RA+hDt62KxMF9QZVvz4DDefp3qvIkP5PFOG/WLfrjxPLptxo0A8jZhcsSOOwxQ== openpgp:0x5C5D1F71
 +
 +Diesen Schlüssel kopieren wir nun auf das entsprechende Zielsystem an Ort und Stelle ''**~/.ssh/authorized_keys**''.
 +   $ scp ~/.ssh/872B620E5C5D1F71.pub zielhost.dmz.nausch.org: && ssh zielhost.dmz.nausch.org 'cat authorized_keys >> ~/.ssh/authorized_keys'
 +
 +
 +=== SSH-Verbindung aufbauen ===
 +Nun können wir wie gewohnt eine Verbindung zu unserem entfernten System aufbauen. 
 +   $ ssh zielhost.dmz.nausch.org
 +bzw.
 +   $ ssh <IP-Adresse-des-Zielhosts>
 +
 +{{ :nitrokey:nitropad_063.png?nolink&475 |Bild: Bildschirmhardcopy beim Verbindungsaufbau / Passwortabfrage der SSH}}
 +
 +Da der SSH-Key zur Authentication nicht im Dateisystem liegt, sondern auf der SmartCard des Nitrokey werden wir nun nach der User-PIN gefragt, damit auf den privaten Schlüssel der Karte zugegriffen werden kann.
 +
 +{{ :nitrokey:nitropad_064.png?nolink&475 |Bild: Bildschirmhardcopy beim einer Remote-Verbindung via SSH}}
 +
 +Der entsperrte Schlüssel der SmartCard des Nitrokey Start wird nur für den Verbindungsaufbau zum Zielsystem verwendet. Bei jedem erneuten SSH-Verbindung müssen wir erneut bei angestecktem Nitrokey Start die PIN Nummer zum Entsperren eingeben!
 +
 +/*
 +$ ssh -I /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so voip
 +##############################################################################
 +#                                                                            #
 +#                       This is a private home server.                       #
 +#                                                                            #
 +#             Unauthorized access to this system is prohibited !             #
 +#                                                                            #
 +#    This system is actively monitored and all connections may be logged.    #
 +#         By accessing this system, you consent to this monitoring.          #
 +#                                                                            #
 +##############################################################################
 +Enter PIN for 'OpenPGP card (User PIN)': 
 +Last login: Sun Aug 30 16:58:05 2020 from vml000027.dmz.nausch.org
 +##############################################################################
 +#                                                                            #
 +#                 This is the home server of Michael Nausch.                 #
 +#                                                                            #
 +#                            vml000177.nausch.org                            #
 +#                                                                            #
 +#             Unauthorized access to this system is prohibited !             #
 +#                                                                            #
 +#    This system is actively monitored and all connections may be logged.    #
 +#         By accessing this system, you consent to this monitoring.          #
 +#                                                                            #
 +##############################################################################
 +[django@vml000177 ~]$
 +*/
 +==== EMail mit Thunderbird  ==== 
 +=== PGP ===
 +Unseren zuvor auf dem Nitrokey Pro **[[#schluessel_auf_dem_nitrokey_pro_generieren|erzeugtem Schlüsselmaterial]]** wollen wir nun verwenden, um bei Thunderbird unsere elektronische Kommunikation per eMail abzusichern. 
 +
 +<WRAP center round tip 80%>
 +Bei Thunderbird **68.10.0** (64-bit) ist es angeraten **__nicht__** das benötigte add-on **Enigmail** via apt zu installieren, sondern direkt über den zugehörigen Menüpunkt in der Anwendung selbst!
 +</WRAP>
 +
 +Über das Menü (das Icon mit den drei Querstreifen rechts oben am Bildschirm) wählen wir den Menüpunkt **Add-ons** aus.
 +
 +{{ :nitrokey:thunderbird_mint_01.png?nolink&800 |Bild: Bildschirmhardcoby von Thunderbild - Auswahl Add-ons Menü}}
 +
 +Hier suchen wir dann über die Suchoption nach dem Add-on **EnigMail**.
 +
 +{{ :nitrokey:thunderbird_mint_02.png?nolink&800 |Bild: Bildschirmhardcoby von Thunderbild - Auswahl Add-ons Menü}}
 +
 +Zum Installieren klicken wir auf die grüne Schaltfläche **+ Add to Thunderbird** beim angezeigtem Add-on **EnigMail**.
 +
 +{{ :nitrokey:thunderbird_mint_03.png?nolink&800 |Bild: Bildschirmhardcoby von Thunderbild - Auswahl Add-ons Menü}}
 +
 +Es öffnet sich ein Dialogfenster bei dem angezeigt wird, ob GnuPG im system vorhanden ist.
 +
 +{{ :nitrokey:thunderbird_mint_04.png?nolink&375 |Bild: Bildschirmhardcoby von Thunderbild - Installation /Prüfung der Anhängigkeiten}}
 +
 +Anschließend wird nach gültigem Schlüsselmaterial gesucht.
 +
 +{{ :nitrokey:thunderbird_mint_05.png?nolink&375 |Bild: Bildschirmhardcoby von Thunderbild - Importieren des vorhandenen Schlüsselmaterials}}
 +
 +Nun müssen wir die PGP-Unterstützung und den zugehörigen PGP-Key dem Konto zuweisen. Dazu klicken wir erneut auf das Menü-Icon rechts oben am Bildschirm (das Icon mit den drei Querstreifen) wählen nun den Menüpunkt **Preferences** aus.
 +
 +{{ :nitrokey:thunderbird_mint_06.png?nolink&800 |Bild: Bildschirmhardcoby von Thunderbild - Auswahl Preferences Menü}}
 +
 +Die Einstelungen zu den Konten finden wir unter dem Menüpunkt **Account Settings**.
 +
 +{{ :nitrokey:thunderbird_mint_07.png?nolink&800 |Bild: Bildschirmhardcoby von Thunderbild - Auswahl Account-Settings Menü}}
 +
 +Bei betreffenden Konto klicken wir dann auf die Schaltfläche **[ OpenPGP Security ]** und wählen den zur eMail-Adresse gehörigen PGP-Key, der auf dem Nitrokey generiert und gespeichert wurde, aus.
 +
 +{{ :nitrokey:thunderbird_mint_08.png?nolink&650 |Bild: Bildschirmhardcoby von Thunderbild - Auswahl PGP-Schlüssel bei den Account Einstellungen}}
 +
 +Sobald wir nun eine Nachricht verschicken die signiert werden soll, wird vor dem Versand die PIN abgefragt und die Nachricht mit dem Signatur-Unterschlüssel unterschrieben.
 +
 +{{ :nitrokey:thunderbird_mint_12.png?nolink&600 |Bild: Bildschirmhardcoby von Thunderbild - Abfrage User PIN bei Versand/Signierung einer eMail}}
 +
 +Sobald wir eine verschlüsselte Nachricht öffnen, werden wir nach der PIN gefragt, damit der Schlüssel zum Entschlüsseln auf der SmartCard freigeschalten werden kann.
 +
 +{{ :nitrokey:thunderbird_mint_09.png?nolink&800 |Bild: Bildschirmhardcoby von Thunderbild - Abfrage User PIN beim Versuch eine verschlüsselte eMail zu öffnen}}
 +
 +Nach eingabe der USER-PIN wird die Anchricht mit Hilfe des [[#schluessel_auf_dem_nitrokey_pro_generieren|secret-keys]] auf der OpenPGP-SmartCard entschlüsselt und angezeigt.
 +
 +{{ :nitrokey:thunderbird_mint_10.png?nolink&800 |Bild: Bildschirmhardcoby von Thunderbild - Auswahl Add-ons Menü}}
 +
 +Über die Schaltfläche **[ Details V ]** können wir uns Details zu der verschlüsselten Nachricht bzw. zum verwendetetn Schlüssel anzeigen lassen.
 +
 +{{ :nitrokey:thunderbird_mint_11.png?nolink&500 |Bild: Bildschirmhardcoby von Thunderbild - Auswahl Add-ons Menü}}
 +
 +=== S/MIME  (X.509) ===
 +== Vorbereitungen - micro-ca-tool und libengine-pkcs11-openssl==
 +Damit wir ein X.509-Zertifikat bei einer **[[https://de.wikipedia.org/wiki/Zertifizierungsstelle|CA]]**((**C**ertification **A**uthority => Zertifizierungsstelle)) bezioehen können, benötigen wir einen **[[https://de.wikipedia.org/wiki/Certificate_Signing_Request|CSR]]**((**C**ertificate **S**igning **R**equest)). Für die Erstellung dieses **CSR**s verwenden wir das **[[https://github.com/sektioneins/micro-ca-tool|micro-ca-tool]]**.
 +
 +Bevor wir es von **[[https://github.com|GitHub]]** herunterladen installieren wir noch die benötigte **libengine**:
 +   $ sudo apt install libengine-pkcs11-openssl
 +
 +Anschließend legen wir uns ein entsprechendes Verzeichnis für das Toool im Homeverzeichnis **''~/''** unseres Admin-Users an.
 +   $ mkdir ~/nitrokey
 +
 +   $ cd  ~/nitrokey
 +
 +Dann Clonen wir das Projekt.
 +   $ git clone https://github.com/sektioneins/micro-ca-tool.git
 +
 +Anschließend verlinken wir noch das ausführbare Shell-Script, welches uns die Arbeit entsprechend vereinfachen wird.
 +   $ ln -s ~/nitrokey/micro-ca-tool/micro-ca-tool ~/bin/micro-ca-tool
 +
 +Mit der Option **''-h''** können wir uns einen Hilfetext von **micro-ca-tool** anzeigen lassen.
 +   $ micro-ca-tool -h
 +<code>                 mmm    mm         mmmmmmm               ""#
 +           m"   "   ##            #     mmm    mmm     #
 + #   #         #       #  #           #    #" "#  #" "#    #
 + #   #   """   #       #mm#   """     #    #   #  #   #    #
 + #mmm#        "mmm" #    #          #    "#m#"  "#m#"    "mm
 + #
 + "               (C) 2015 SektionEins GmbH / Ben Fuhrmannek
 +                 https://sektioneins.com/
 +                 https://github.com/sektioneins/micro-ca-tool
 +[#] Version: 0.1
 +
 +Welcome to µ-CA.
 +This tool will help you to perform basic tasks with your CA:
 +* Create CA as files
 +* or Create CA on a SmartCard
 +* or Create CA as files and store on SmartCard
 +* Create intermediate CA
 +* Sign other certificates
 +* Backup CA key with n-of-m scheme key sharing
 +* Create client certificates
 +* Basic SmartCard functions: Info, Read, Write, Generate keys, Reset
 +
 +SECURITY NOTE: This tool handles secret keys. As such it is best to follow the 
 +following guidelines:
 +* Use this tool only on single-user and non-networked systems.
 +* Make sure files are stored on an encrypted filesystem only. E.g. copy this 
 +script to a crypto-container.
 +* Do not leave unencrypted private keys when done. Better encrypt them for 
 +backup or store them on an HSM.
 +* When done, unmount the encrypted filesystem.
 +
 +[#] Usage: /home/django/bin/micro-ca-tool [-c <config>] [-v] [-h] [<menu> <submenu>]
 +[#]   -c  specify alternative config file
 +[#]   -v  be verbose
 +[#]   -h  show this help message
 +[#]  optional [<menu> <submenu>] directly calls a function, then exits.</code>
 +
 +== CSR mit Hilfe des micro-ca-tool erstellen ==
 +Den **CSR**((**C**ertificate **S**igning **R**equest)) oder auf Deutsch **//[[https://de.wikipedia.org/wiki/Certificate_Signing_Request|Zertifikatsignierungsanforderung]]//** erstellen wir der Einfachheit halber mit Hilfe des **''micro-ca-tool''**.
 +
 +Das Tool hält alle relevanten Konfigurationsparameter in einer zugehörigen Datei **''micro-ca-tool.config''** vor.
 +   $ cat micro-ca-tool.config
 +<file bash micro-ca-tool.config>## autogenerated config file for micro-ca-tool 0.1
 +cfg_app_openssl="/usr/bin/openssl"
 +cfg_app_pkcs15_init="pkcs15-init"
 +cfg_app_pkcs15_tool="pkcs15-tool"
 +cfg_file_engine_pkcs11="/usr/lib/x86_64-linux-gnu/engines-1.1/libpkcs11.so"
 +cfg_file_opensc_pkcs11="/usr/lib/x86_64-linux-gnu/opensc-pkcs11.so"
 +</file>
 +
 +Nun erzeugen wir uns einen **CSR** denn wir später bei der **CA** unseres Vertrauens einreichen vund bitten werden, dass diese den CSR signieren und uns siomit ein Zertifikat auisstellen mögen. 
 +
 +Wir müssen dem **''micro-ca-tool''** nun nur noch folgende Parameter mitgeben
 +  * **Subject** : Im Falle eines X.509 für eMailverschlüsselung ist diese die eMailadresse des betreffenden Kontos, in unserem Falle also **''/CN=django@nausch.org''**
 +  * **CSR Filename** : Dateiname der CSR-Datei
 +  * **Private Key** : Zum Erstellen und Signieren des CSR muss des Tool wiossen wo es den privatzen Schlüssel auf der Karte findet. Wir lassen uns also erst  einmal zur Sicherheit den Inhalt der OpenPGP-SmartCard anzeigen. <code> $ micro-ca-tool sc i</code><code>                mmm    mm         mmmmmmm               ""#
 +           m"   "   ##            #     mmm    mmm     #
 + #   #         #       #  #           #    #" "#  #" "#    #
 + #   #   """   #       #mm#   """     #    #   #  #   #    #
 + #mmm#        "mmm" #    #          #    "#m#"  "#m#"    "mm
 + #
 + "               (C) 2015 SektionEins GmbH / Ben Fuhrmannek
 +                 https://sektioneins.com/
 +                 https://github.com/sektioneins/micro-ca-tool
 +[#] Version: 0.1
 +Using reader with a card: Nitrokey Nitrokey Pro (000034D40000000000000000) 00 00
 +Private RSA Key [Signature key]
 + Object Flags   : [0x03], private, modifiable
 + Usage          : [0x20C], sign, signRecover, nonRepudiation
 + Access Flags   : [0x1D], sensitive, alwaysSensitive, neverExtract, local
 + ModLength      : 4096
 + Key ref        : 0 (0x00)
 + Native         : yes
 + Auth ID        : 01
 + ID             : 01
 + MD:guid        : 48870840-df64-70eb-2bc0-105a4f678b41
 +
 +Private RSA Key [Encryption key]
 + Object Flags   : [0x03], private, modifiable
 + Usage          : [0x22], decrypt, unwrap
 + Access Flags   : [0x1D], sensitive, alwaysSensitive, neverExtract, local
 + ModLength      : 4096
 + Key ref        : 1 (0x01)
 + Native         : yes
 + Auth ID        : 02
 + ID             : 02
 + MD:guid        : 7b0d3403-7bbc-a9cc-a3e2-213e3296ecb2
 +
 +Private RSA Key [Authentication key]
 + Object Flags   : [0x03], private, modifiable
 + Usage          : [0x222], decrypt, unwrap, nonRepudiation
 + Access Flags   : [0x1D], sensitive, alwaysSensitive, neverExtract, local
 + ModLength      : 4096
 + Key ref        : 2 (0x02)
 + Native         : yes
 + Auth ID        : 02
 + ID             : 03
 + MD:guid        : c805d2b2-2d84-3703-089a-3d691d17e5b3
 +
 +Public RSA Key [Signature key]
 + Object Flags   : [0x02], modifiable
 + Usage          : [0xC0], verify, verifyRecover
 + Access Flags   : [0x02], extract
 + ModLength      : 4096
 + Key ref        : 0 (0x00)
 + Native         : no
 + Path           : b601
 + ID             : 01
 +
 +Public RSA Key [Encryption key]
 + Object Flags   : [0x02], modifiable
 + Usage          : [0x11], encrypt, wrap
 + Access Flags   : [0x02], extract
 + ModLength      : 4096
 + Key ref        : 0 (0x00)
 + Native         : no
 + Path           : b801
 + ID             : 02
 +
 +Public RSA Key [Authentication key]
 + Object Flags   : [0x02], modifiable
 + Usage          : [0x51], encrypt, wrap, verify
 + Access Flags   : [0x02], extract
 + ModLength      : 4096
 + Key ref        : 0 (0x00)
 + Native         : no
 + Path           : a401
 + ID             : 03
 +
 +</code> In unsererm Fall ist das der Schlüssel **''01:01''**. <code>Using reader with a card: Nitrokey Nitrokey Pro (000034D40000000000000000) 00 00
 +Private RSA Key [Signature key]
 + Object Flags   : [0x03], private, modifiable
 + Usage          : [0x20C], sign, signRecover, nonRepudiation
 + Access Flags   : [0x1D], sensitive, alwaysSensitive, neverExtract, local
 + ModLength      : 4096
 + Key ref        : 0 (0x00)
 + Native         : yes
 + Auth ID        : 01
 + ID             : 01
 + MD:guid        : 48870840-df64-70eb-2bc0-105a4f678b41</code>
 +
 +Wir rufen nun also das Tool **''micro-ca-tool''** wir folgt auf und geben dann die entsprechenden Daten an:
 +   $ micro-ca-tool sc new-csr
 +<code>                 mmm    mm         mmmmmmm               ""#
 +           m"   "   ##            #     mmm    mmm     #
 + #   #         #       #  #           #    #" "#  #" "#    #
 + #   #   """   #       #mm#   """     #    #   #  #   #    #
 + #mmm#        "mmm" #    #          #    "#m#"  "#m#"    "mm
 + #
 + "               (C) 2015 SektionEins GmbH / Ben Fuhrmannek
 +                 https://sektioneins.com/
 +                 https://github.com/sektioneins/micro-ca-tool
 +[#] Version: 0.1
 +[?] Subject [/CN=Hans Wurst] /CN=django@nausch.org
 +[?] CSR Filename [usercert-0094.csr] django-nausch.org-csr.pem
 +[?] Private Key (<Auth-ID>:<Key-ID>) [02:03] 01:01
 +OpenSSL> (dynamic) Dynamic engine loading support
 +[Success]: SO_PATH:/usr/lib/x86_64-linux-gnu/engines-1.1/libpkcs11.so
 +[Success]: ID:pkcs11
 +[Success]: LIST_ADD:1
 +[Success]: LOAD
 +[Success]: MODULE_PATH:/usr/lib/x86_64-linux-gnu/opensc-pkcs11.so
 +Loaded: (pkcs11) pkcs11 engine
 +OpenSSL> engine "pkcs11" set.
 +Enter PKCS#11 token PIN for OpenPGP card (User PIN (sig)):
 +OpenSSL></code>
 +
 +Nach Eingabe der **USER**-PIN wird der CSR im aktuell genutzten Pfad gespeichert. Bei Interesse können wir mit dem Befehl **''openssl''** uns den Inhalt dieses CSRs ausgeben und anzeigen lassen.
 +   $ openssl req -noout -text -in django-nausch.org-csr.pem
 +
 +<code>Certificate Request:
 +    Data:
 +        Version: 1 (0x0)
 +        Subject: CN = django@nausch.org
 +        Subject Public Key Info:
 +            Public Key Algorithm: rsaEncryption
 +                RSA Public-Key: (4096 bit)
 +                Modulus:
 +                    00:9d:ff:71:02:88:0f:9f:68:7a:04:13:97:76:7f:
 +                    d5:93:0a:29:5f:4d:07:b5:1e:1f:44:8a:21:f4:76:
 +                    33:52:a1:85:1c:6d:81:da:52:18:01:7c:53:0e:35:
 +                    8a:df:0e:97:b9:90:d5:f2:20:2d:ab:92:8a:4f:4e:
 +                    40:ba:99:70:2a:d3:6c:32:9c:47:45:e2:b6:35:62:
 +                    71:60:e4:ae:00:7c:39:90:32:d6:bf:69:18:7e:19:
 +                    a2:9d:92:20:69:95:47:18:ed:01:87:11:ea:04:8b:
 +                    26:79:56:d4:76:3a:c1:68:25:b7:13:0f:58:41:fd:
 +                    2d:33:b9:e4:80:ab:da:25:e1:65:b0:9d:52:61:4d:
 +                    49:e9:6e:60:ef:7a:67:e0:e3:07:0e:86:49:36:51:
 +                    dc:31:89:95:ad:cc:d4:b6:72:f8:91:82:c2:05:d6:
 +                    54:6b:c3:30:ac:dc:e5:65:c9:08:01:8a:e3:f5:f9:
 +                    7c:47:06:c7:16:24:81:f0:6b:0c:78:f9:fa:cc:7a:
 +                    73:b0:4d:a7:c1:c3:d8:cc:da:1c:ae:a8:91:34:4a:
 +                    9f:7e:87:fe:1f:48:2b:17:fb:1c:10:bd:32:3c:29:
 +                    4e:98:e0:d0:53:24:7a:ae:09:9e:0b:40:98:68:65:
 +                    57:fd:c2:86:a3:5e:a1:ec:c6:60:72:63:bb:b3:b3:
 +                    95:e6:ac:8f:56:fd:37:3e:25:c8:f7:4c:a5:e6:d8:
 +                    ab:f6:f6:8b:63:ff:bc:1f:5f:28:8f:5b:c4:43:11:
 +                    65:d7:1d:1d:ca:e7:89:bc:95:4b:ca:64:c1:d2:d4:
 +                    2e:61:01:0d:78:56:5e:04:5a:00:e0:e7:93:ca:61:
 +                    c2:2f:d4:03:ce:fd:68:98:be:d1:4f:d6:b8:cb:40:
 +                    1c:7d:fe:6d:33:76:70:50:9e:69:54:d0:d6:e9:8a:
 +                    85:aa:37:ee:ce:94:8d:b1:ad:54:9a:4d:5c:39:bf:
 +                    0b:24:06:62:b6:05:dd:ee:17:47:04:17:5e:f3:6a:
 +                    a6:b1:cc:c4:c0:70:3c:43:3b:c1:ea:e2:73:68:41:
 +                    22:8f:a4:d6:14:9e:5e:50:de:e0:f3:de:df:5d:a1:
 +                    bd:44:41:3a:ba:27:78:4c:78:39:8b:f1:60:17:8b:
 +                    99:61:b3:13:29:7f:d4:02:14:76:42:34:39:00:e5:
 +                    9d:a7:36:d3:6e:72:f9:9a:8f:0c:c5:b5:5b:14:b4:
 +                    fa:29:d0:28:e2:f1:d0:db:80:44:52:00:43:28:3b:
 +                    15:be:e1:b8:1e:b1:10:5d:71:b2:e6:8c:2b:7a:a8:
 +                    f3:90:8d:b7:29:d8:58:ce:36:e2:7e:59:b7:11:b8:
 +                    ec:c7:41:22:07:ec:ce:83:67:10:c4:4a:b0:92:12:
 +                    4b:a2:59
 +                Exponent: 65537 (0x10001)
 +        Attributes:
 +            a0:00
 +    Signature Algorithm: sha256WithRSAEncryption
 +         8a:8e:89:d6:8b:b1:01:b4:92:0c:f6:1e:64:0e:8a:d3:ab:22:
 +         46:f7:47:f7:2e:32:a9:7d:33:51:31:78:7c:a1:fd:21:25:22:
 +         c9:38:45:32:56:2f:34:8b:88:a7:24:f3:6f:28:bd:c1:96:fc:
 +         7f:3f:e6:2e:80:0d:71:81:d5:01:63:38:d7:3e:aa:e8:e1:a8:
 +         3d:0a:d6:b1:6d:15:d1:f3:d2:9f:a7:56:c5:f1:74:fb:ad:bc:
 +         90:a2:ad:4d:ec:fc:dd:35:fb:a2:30:7d:87:32:5c:e9:b2:9c:
 +         86:e9:89:48:d3:9d:f1:4a:ec:a0:ba:6f:08:d5:7a:29:37:54:
 +         60:69:a0:f8:12:87:ff:02:d5:37:ca:8a:42:57:8e:96:36:f7:
 +         e6:b0:97:51:01:03:d8:db:73:21:65:52:c4:3d:d6:51:c9:ef:
 +         1d:b9:1a:cb:d0:b9:50:ab:5c:46:ab:0b:9c:66:92:30:08:52:
 +         bd:74:09:2b:37:e8:6c:39:0f:9a:c3:cc:ed:3b:77:07:f8:d4:
 +         ec:c7:32:76:78:0c:31:af:57:9d:cd:29:f0:5f:ad:5e:cd:c4:
 +         21:be:2a:5f:c9:82:a6:db:47:23:cd:8a:71:81:4e:13:04:e2:
 +         31:b3:fb:d6:52:c9:65:42:0f:5d:b5:b3:8a:c9:fb:b4:f6:2b:
 +         f4:44:ec:45:8a:00:96:f0:a0:19:6d:e6:bd:0d:5f:59:68:09:
 +         9d:c0:f1:d4:c4:e8:37:fd:0e:6f:fb:a9:48:69:27:2e:3b:3e:
 +         9e:d7:5b:3e:08:f2:f6:9a:82:b5:a6:e3:7f:0f:b9:a7:34:1a:
 +         f5:7a:d6:e9:62:1e:d7:c9:2e:6c:dd:88:87:b4:82:ef:3e:e9:
 +         ff:35:05:ca:fe:f5:2e:1e:fd:44:0a:06:ba:cd:95:5f:99:79:
 +         2b:0f:a8:b3:13:2a:a2:0e:32:66:bb:82:9a:bb:e5:73:82:32:
 +         20:6b:af:56:8a:c8:49:16:07:7d:f1:9d:7b:7c:99:00:f7:e0:
 +         69:68:17:6b:8a:25:1c:98:45:20:35:41:d3:3a:42:ae:c3:67:
 +         b8:21:5b:f4:21:0a:54:99:59:1e:28:ed:79:a0:e4:ac:11:de:
 +         91:ca:4c:1a:38:ac:83:15:ea:82:2c:c8:7e:33:9c:ec:34:90:
 +         4c:58:85:b5:6d:2a:80:b2:7c:c6:49:3d:46:99:83:cd:8f:08:
 +         67:a5:c7:8d:ea:66:d3:2f:59:3b:09:59:0f:e1:69:62:e1:7c:
 +         e2:c8:04:7d:6d:bb:27:63:08:c1:fc:5a:1c:07:89:1e:1b:37:
 +         84:79:63:33:22:bc:6a:58:5a:3e:55:30:6f:d0:79:0d:1a:59:
 +         f9:20:49:1a:fd:75:65:1a</code>
 +
 +Die Date laden wir nun entweder auf der WEB-GUI der CA hoch oder kopieren den Inhalt der Datei und fügen diese im Betreffenden Formularfeld ein, welches die CA zur Verfügung stellt.
 +   $ cat django-nausch.org-csr.pem
 +<code>-----BEGIN CERTIFICATE REQUEST-----
 +MIIEZjCCAk4CAQAwITEfMB0GA1UEAwwWZGphbmdvQG1haWxzZXJ2ZXIuZ3VydTCC
 +AiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAJ3/cQKID59oegQTl3Z/1ZMK
 +KV9NB7UeH0SKIfR2M1KhhRxtgdpSGAF8Uw41it8Ol7mQ1fIgLauSik9OQLqZcCrT
 +bDKcR0XitjVicWDkrgB8OZAy1r9pGH4Zop2SIGmVRxjtAYcR6gSLJnlW1HY6wWgl
 +txMPWEH9LTO55ICr2iXhZbCdUmFNSeluYO96Z+DjBw6GSTZR3DGJla3M1LZy+JGC
 +wgXWVGvDMKzc5WXJCAGK4/X5fEcGxxYkgfBrDHj5+sx6c7BNp8HD2MzaHK6okTRK
 +n36H/h9IKxf7HBC9MjwpTpjg0FMkeq4JngtAmGhlV/3ChqNeoezGYHJju7Ozleas
 +j1b9Nz4lyPdMpebYq/b2i2P/vB9fKI9bxEMRZdcdHcrnibyVS8pkwdLULmEBDXhW
 +XgRaAODnk8phwi/UA879aJi+0U/WuMtAHH3+bTN2cFCeaVTQ1umKhao37s6UjbGt
 +VJpNXDm/CyQGYrYF3e4XRwQXXvNqprHMxMBwPEM7weric2hBIo+k1hSeXlDe4PPe
 +312hvURBOroneEx4OYvxYBeLmWGzEyl/1AIUdkI0OQDlnac2025y+ZqPDMW1WxS0
 ++inQKOLx0NuARFIAQyg7Fb7huB6xEF1xsuaMK3qo85CNtynYWM424n5ZtxG47MdB
 +IgfszoNnEMRKsJISS6JZAgMBAAGgADANBgkqhkiG9w0BAQsFAAOCAgEAio6J1oux
 +AbSSDPYeZA6K06siRvdH9y4yqX0zUTF4fKH9ISUiyThFMlYvNIuIpyTzbyi9wZb8
 +fz/mLoANcYHVAWM41z6q6OGoPQrWsW0V0fPSn6dWxfF0+628kKKtTez83TX7ojB9
 +hzJc6bKchumJSNOd8UrsoLpvCNV6KTdUYGmg+BKH/wLVN8qKQleOljb35rCXUQED
 +2NtzIWVSxD3WUcnvHbkay9C5UKtcRqsLnGaSMAhSvXQJKzfobDkPmsPM7Tt3B/jU
 +7McydngMMa9Xnc0p8F+tXs3EIb4qX8mCpttHI82KcYFOEwTiMbP71lLJZUIPXbWz
 +isn7tPYr9ETsRYoAlvCgGW3mvQ1fWWgJncDx1MToN/0Ob/upSGknLjs+ntdbPgjy
 +9pqCtabjfw+5pzQa9XrW6WIe18kubN2Ih7SC7z7p/zUFyv71Lh79RAoGus2VX5l5
 +Kw+osxMqog4yZruCmrvlc4IyIGuvVorISRYHffGde3yZAPfgaWgXa4olHJhFIDVB
 +0zpCrsNnuCFb9CEKVJlZHijteaDkrBHekcpMGjisgxXqgizIfjOc7DSQTFiFtW0q
 +gLJ8xkk9RpmDzY8IZ6XHjepm0y9ZOwlZD+FpYuF84sgEfW27J2MIwfxaHAeJHhs3
 +hHljMyK8alhaPlUwb9B5DRpZ+SBJGv11ZRo=
 +-----END CERTIFICATE REQUEST-----</code>Nach erfolgter Verifizierung durch die CA wird uns diese ein Zertifikat präsentieren oder zum Download anbieten.
 +   $ vim django-nausch.org-certificat.pem
 +
 +<code>-----BEGIN CERTIFICATE-----
 +MIIGfzCCBGegAwIBAgIDFKmlMA0GCSqGSIb3DQEBCwUAMHkxEDAOBgNVBAoTB1Jv
 +b3QgQ0ExHjAcBgNVBAsTFWh0dHA6Ly93d3cuY2FjZXJ0Lm9yZzEiMCAGA1UEAxMZ
 +dEBjYWNlcnQub3JnMB4XDTIwMDgzMDE4MDgyNVoXDTIyMDgzMDE4MDgyNVowQTEY
 +Q0EgQ2VydCBTaWduaW5nIEF1dGhvcml0eTEhMB8GCSqGSIb3DQEJARYSc3VwcG9y
 +MBYGA1UEAxMPQ0FjZXJ0IFdvVCBVc2VyMSUwIwYJKoZIhvcNAQkBFhZkamFuZ29A
 +bWFpbHNlcnZlci5ndXJ1MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
 +nf9xAogPn2h6BBOXdn/VkwopX00HtR4fRIoh9HYzUqGFHG2B2lIYAXxTDjWK3w6X
 +uZDV8iAtq5KKT05AuplwKtNsMpxHReK2NWJxYOSuAHw5kDLWv2kYfhminZIgaZVH
 +GO0BhxHqBIsmeVbUdjrBaCW3Ew9YQf0tM7nkgKvaJeFlsJ1SYU1J6W5g73pn4OMH
 +DoZJNlHcMYmVrczUtnL4kYLCBdZUa8MwrNzlZckIAYrj9fl8RwbHFiSB8GsMePn6
 +zHpzsE2nwcPYzNocrqiRNEqffof+H0grF/scEL0yPClOmODQUyR6rgmeC0CYaGVX
 +/cKGo16h7MZgcmO7s7OV5qyPVv03PiXI90yl5tir9vaLY/+8H18oj1vEQxFl1x0d
 +yueJvJVLymTB0tQuYQENeFZeBFoA4OeTymHCL9QDzv1omL7RT9a4y0Acff5tM3Zw
 +UJ5pVNDW6YqFqjfuzpSNsa1Umk1cOb8LJAZitgXd7hdHBBde82qmsczEwHA8QzvB
 +AOWdpzbTbnL5mo8MxbVbFLT6KdAo4vHQ24BEUgBDKDsVvuG4HrEQXXGy5owreqjz
 +6uJzaEEij6TWFJ5eUN7g897fXaG9REE6uid4THg5i/FgF4uZYbMTKX/UAhR2QjQ5
 +kI23KdhYzjbiflm3Ebjsx0EiB+zOg2cQxEqwkhJLolkCAwEAAaOCAUYwggFCMAwG
 +A1UdEwEB/wQCMAAwVgYJYIZIAYb4QgENBEkWR1RvIGdldCB5b3VyIG93biBjZXJ0
 +aWZpY2F0ZSBmb3IgRlJFRSBoZWFkIG92ZXIgdG8gaHR0cDovL3d3dy5DQWNlcnQu
 +b3JnMA4GA1UdDwEB/wQEAwIDqDBABgNVHSUEOTA3BggrBgEFBQcDBAYIKwYBBQUH
 +AwIGCisGAQQBgjcKAwQGCisGAQQBgjcKAwMGCWCGSAGG+EIEATAyBggrBgEFBQcB
 +AQQmMCQwIgYIKwYBBQUHMAGGFmh0dHA6Ly9vY3NwLmNhY2VydC5vcmcwMQYDVR0f
 +VR0RBBowGIEWZGphbmdvQG1haWxzZXJ2ZXIuZ3VydTANBgkqhkiG9w0BAQsFAAOC
 +BCowKDAmoCSgIoYgaHR0cDovL2NybC5jYWNlcnQub3JnL3Jldm9rZS5jcmwwIQYD
 +AgEACkbMXEhM1FGXrJUWXwkmld3vEulz62u8Frzcv/966o4qFs2UiXQ44rZNJQf6
 +Gu5+26SlnyjCFtF3nHVY005abfri3Bvc0BNAiibodV1SFnSk9AuHFRRSGtaw4TLk
 +PybeS8dq+NB376nOpdtj8xbYU6oJV479QKuHM2etgWpFWRHWsrjoBkbAQ7I5sQZb
 +H9a21pYqdHeElkHPlfmSI3KQ+z0vo7SLqOE3alRPZnw9CUg3rh99MP11ZB5GEDOj
 +Dk3TQHfWbPQ9J3G004YfPKbfz/mJnIGN3nyxRzgV/LaRtI57XOKbKoDi1Q0zSxlg
 +sU2Q/GEQsnCJHSLkbDMNg99YgeqMstfM6jblaaWmubIn0yyohlPj7JSmDrP0Fw/N
 +2xpyVq3+qZwxxUQxK3mSD4LZ6XwBiiMPWF50qibfEWNajpyi3uUcPyDeOesjtNKO
 +CmjnItTPUJXrFImv8S56G4Eu5PCau0PRcLP/7tflt0eEStRpL1AHzu/4gwBUu2LX
 +ZVBseQdtbKV6ePB58SEk6tOXNeNFtsWlrpWmlzuVH2ukaT9G/NfVc3vOx1TCylUr
 +3COLw+Rtw6TWRo3+izMjOREmK5O8eMHZoHaMShA3q3aAr1jwxFmk5cFU2jUzZrOh
 +105SyG2nNDn1ndsvyka2L57qb8j6V8Hkdig/7ond+xx+j5I=
 +-----END CERTIFICATE-----
 +</code> 
 +
 +Dieses Zertifikatsfile importieren wir nun mit Hilfe des Prgramms **''pkcs15-init''** in die OpenPGP Smart-Card des Nitrokey Pros.
 +   $ pkcs15-init --store-certificate  django-nausch.org-certificat.pem --id 3
 +
 +  Using reader with a card: Nitrokey Nitrokey Pro (000034D40000000000000000) 00 00
 +  Security officer PIN [Admin PIN] required.
 +  Please enter Security officer PIN [Admin PIN]:
 +
 +Beim Import werden wir wie erwartet nach der **ADMIN**-PIN gefragt.
 +
 +Zum Schluss können wir uns nocheinmal anzeigen lassen und somit überzeugen, dass das betreffende Zertifikat richtig importiert wurde.
 +   $ micro-ca-tool sc i
 +<code>                 mmm    mm         mmmmmmm               ""#
 +           m"   "   ##            #     mmm    mmm     #
 + #   #         #       #  #           #    #" "#  #" "#    #
 + #   #   """   #       #mm#   """     #    #   #  #   #    #
 + #mmm#        "mmm" #    #          #    "#m#"  "#m#"    "mm
 + #
 + "               (C) 2015 SektionEins GmbH / Ben Fuhrmannek
 +                 https://sektioneins.com/
 +                 https://github.com/sektioneins/micro-ca-tool
 +[#] Version: 0.1
 +Using reader with a card: Nitrokey Nitrokey Pro (000034D40000000000000000) 00 00
 +X.509 Certificate [Cardholder certificate]
 + Object Flags   : [0x00]
 + Authority      : no
 + Path           : 3f007f21
 + ID             : 03
 + Encoded serial : 02 03 14A9A5
 +
 +Private RSA Key [Signature key]
 + Object Flags   : [0x03], private, modifiable
 + Usage          : [0x20C], sign, signRecover, nonRepudiation
 + Access Flags   : [0x1D], sensitive, alwaysSensitive, neverExtract, local
 + ModLength      : 4096
 + Key ref        : 0 (0x00)
 + Native         : yes
 + Auth ID        : 01
 + ID             : 01
 + MD:guid        : 48870840-df64-70eb-2bc0-105a4f678b41
 +
 +Private RSA Key [Encryption key]
 + Object Flags   : [0x03], private, modifiable
 + Usage          : [0x22], decrypt, unwrap
 + Access Flags   : [0x1D], sensitive, alwaysSensitive, neverExtract, local
 + ModLength      : 4096
 + Key ref        : 1 (0x01)
 + Native         : yes
 + Auth ID        : 02
 + ID             : 02
 + MD:guid        : 7b0d3403-7bbc-a9cc-a3e2-213e3296ecb2
 +
 +Private RSA Key [Authentication key]
 + Object Flags   : [0x03], private, modifiable
 + Usage          : [0x222], decrypt, unwrap, nonRepudiation
 + Access Flags   : [0x1D], sensitive, alwaysSensitive, neverExtract, local
 + ModLength      : 4096
 + Key ref        : 2 (0x02)
 + Native         : yes
 + Auth ID        : 02
 + ID             : 03
 + MD:guid        : c805d2b2-2d84-3703-089a-3d691d17e5b3
 +
 +Public RSA Key [Signature key]
 + Object Flags   : [0x02], modifiable
 + Usage          : [0xC0], verify, verifyRecover
 + Access Flags   : [0x02], extract
 + ModLength      : 4096
 + Key ref        : 0 (0x00)
 + Native         : no
 + Path           : b601
 + ID             : 01
 +
 +Public RSA Key [Encryption key]
 + Object Flags   : [0x02], modifiable
 + Usage          : [0x11], encrypt, wrap
 + Access Flags   : [0x02], extract
 + ModLength      : 4096
 + Key ref        : 0 (0x00)
 + Native         : no
 + Path           : b801
 + ID             : 02
 +
 +Public RSA Key [Authentication key]
 + Object Flags   : [0x02], modifiable
 + Usage          : [0x51], encrypt, wrap, verify
 + Access Flags   : [0x02], extract
 + ModLength      : 4096
 + Key ref        : 0 (0x00)
 + Native         : no
 + Path           : a401
 + ID             : 03
 +
 +</code>
 +
 +== Vorbereitungen - Thunderbird Einstellungen ==
 +
 +Nun müssen wir die PGP-Unterstützung und den zugehörigen PGP-Key dem Konto zuweisen. Dazu klicken wir erneut auf das Menü-Icon rechts oben am Bildschirm (das Icon mit den drei Querstreifen) wählen nun den Menüpunkt **Preferences** aus.
 +
 +{{ :nitrokey:thunderbird_mint_06.png?nolink&800 |Bild: Bildschirmhardcoby von Thunderbild - Auswahl Preferences Menü}}
 +
 +Die Einstelungen zu den Konten finden wir unter dem Menüpunkt **Account Settings**.
 +
 +{{ :nitrokey:thunderbird_mint_07.png?nolink&800 |Bild: Bildschirmhardcoby von Thunderbild - Auswahl Account-Settings Menü}}
 +
 +In dem Fenster zu den Account-Einstellungen wählen wir dann den Punkt **Security** aus.
 +
 +{{ :nitrokey:thunderbird_mint_13.png?nolink&600 |Bild: Bildschirmhardcopy Thunderbird-Account-Einstellungen - Punkt Security}}
 +
 +Hier klicken wir dann auf die Schaltfläche **[ Securit__y__ Devices ]**
 +
 +{{ :nitrokey:thunderbird_mint_14.png?nolink&600 |Bild: Bildschirmhardcopy Thunderbird-Account-Einstellungen - Punkt Security Devices}}
 +
 +Damit Thunderbird auf die OpenPGP-SmartCard des Nitrokey Pro zugreifen kann, müssen wir noch die dazu benötigte Bibliothek **''/usr/lib/x86_64-linux-gnu/opensc-pkcs11.so''**. Wir klicken also dazu die Schaltfläche **[ __L__oad ]** an und wäheln dann den Speicherort dieser Bibliothek entsprechend aus.
 +
 +{{ :nitrokey:thunderbird_mint_15.png?nolink&350 |Bild: Bildschirmhardcopy Thunderbird-Account-Einstellungen - Load PKC#S11 Device Treiber Auswahl}}
 +
 +Zum Sichern der Eingaben klicken wir hier auf die Schaltfläche **[ OK ]**. Da auf die OpenPGP-SmartVCard des Nitrokey zugegriffen werden muss, wird entsprechend nach der **USER**-PIN gefragt. 
 +
 +{{ :nitrokey:thunderbird_mint_16.png?nolink&350 |Bild: Bildschirmhardcopy Thunderbird-Account-Einstellungen - Load PKC#S11 Device Treiber Auswahl}}
 +
 +Da nur ein Zertifikat auf dem Nitrokey Pro gespeichert ist, fällt die Auswahl für das betreffende Zertifikat nicht sonderlich schwer.
 +
 +{{ :nitrokey:thunderbird_mint_17.png?nolink&450 |Bild: Bildschirmhardcopy Thunderbird-Account-Einstellungen - Auswahl Zertifikat}}
 +
 +Zum Sichern der Eingaben klicken wir auch hier auf die Schaltfläche **[ OK ]**.
 +
 +{{ :nitrokey:thunderbird_mint_18.png?nolink&525 |Bild: Bildschirmhardcopy Thunderbird-Account-Einstellungen - Auswahl Zertifikat}}
 +
 +Da wir ja mit dem Zertifikat unsere ausgehende Post signieren wollen und natürlich eingehende verschlüsselte Nachrichten entschlüsseln wollen, bejahren wir diese Frage hier natürlich mit einem Klick auf die Schaltfläche **[ __Y__es ]**.
 +
 +{{ :nitrokey:thunderbird_mint_19.png?nolink&600 |Bild: Bildschirmhardcoby von Thunderbild - Auswahl Account-Settings Menü}}
 +
 +Sobald wir nun eine Nachricht verschicken die signiert werden soll, wird vor dem Versand die PIN abgefragt und die Nachricht mit dem Signatur-Unterschlüssel unterschrieben.
 +
 +{{ :nitrokey:thunderbird_mint_20.png?nolink&600 |Bild: Bildschirmhardcoby von Thunderbild - Abfrage User PIN bei Versand/Signierung einer eMail}}
 +
 +Sobald wir eine verschlüsselte Nachricht öffnen, werden wir nach der PIN gefragt, damit der Schlüssel zum Entschlüsseln auf der SmartCard freigeschalten werden kann.
 +
 +{{ :nitrokey:thunderbird_mint_21.png?nolink&801 |Bild: Bildschirmhardcoby von Thunderbild - Abfrage User PIN beim Versuch eine verschlüsselte eMail zu öffnen}}
 +
 +Nach eingabe der USER-PIN wird die Anchricht mit Hilfe des [[#schluessel_auf_dem_nitrokey_pro_generieren|secret-keys]] auf der OpenPGP-SmartCard entschlüsselt und angezeigt.
 +
 +{{ :nitrokey:thunderbird_mint_22.png?nolink&800 |Bild: Bildschirmhardcoby von Thunderbild - Anzeige der entschlüsselten eMail}}
 +
 +Über das Schloß-Symbol in der eMailansicht können wir uns Details zu der verschlüsselten Nachricht bzw. zum verwendetetn Schlüssel anzeigen lassen.
 +
 +{{ :nitrokey:thunderbird_mint_23.png?nolink&400 |Bild: Bildschirmhardcoby von Thunderbild - Details zur Mailverschlüsselung}}
  
 +====== Links ======
 +  * **[[wiki:start#sicherheit-_und_vertraulichkeit|Zurück zu Projekte und Themenkapitel]]**
 +  * **[[http://dokuwiki.nausch.org/doku.php/|Zurück zur Startseite]]**
  
  
  • nitrokey/linuxmint/pro.1598786125.txt.gz
  • Zuletzt geändert: 30.08.2020 11:15.
  • von django