{"meta":{"title":"Verschlüsseln geheimer Schlüssel für die REST-API","intro":"Um einen geheimen Schlüssel mit der REST-API zu erstellen oder zu aktualisieren, müssen Sie den Wert des geheimen Schlüssels verschlüsseln.","product":"REST-API","breadcrumbs":[{"href":"/de/enterprise-cloud@latest/rest","title":"REST-API"},{"href":"/de/enterprise-cloud@latest/rest/guides","title":"Anleitungen"},{"href":"/de/enterprise-cloud@latest/rest/guides/encrypting-secrets-for-the-rest-api","title":"Verschlüsseln von Geheimnissen"}],"documentType":"article"},"body":"# Verschlüsseln geheimer Schlüssel für die REST-API\n\nUm einen geheimen Schlüssel mit der REST-API zu erstellen oder zu aktualisieren, müssen Sie den Wert des geheimen Schlüssels verschlüsseln.\n\n## Informationen zu verschlüsselten Geheimnissen\n\nMit mehreren REST-API-Endpunkten können Sie geheime Schlüssel zu GitHub erstellen. Um diese Endpunkte zu verwenden, müssen Sie den geheimen Wert mithilfe von libsodium verschlüsseln. Weitere Informationen finden Sie in der [libsodium-Dokumentation](https://libsodium.gitbook.io/doc/bindings_for_other_languages).\n\nUm einen geheimen Schlüssel zu verschlüsseln, benötigen Sie einen base64-codierten öffentlichen Schlüssel. Sie können einen öffentlichen Schlüssel aus der REST-API abrufen. Um zu bestimmen, welcher Endpunkt zum Abrufen des öffentlichen Schlüssels verwendet werden soll, schauen Sie sich die Dokumentation für den `encrypted_value` Parameter im Endpunkt an, den Sie zum Erstellen eines geheimen Schlüssels verwenden möchten.\n\n## Beispiel zum Verschlüsseln eines geheimen Schlüssels mithilfe von Node.js\n\nWenn Sie Node.js verwenden, können Sie Ihr Geheimnis mithilfe der Bibliothek libsodium-wrappers verschlüsseln. Weitere Informationen finden Sie unter [libsodium-wrappers](https://www.npmjs.com/package/libsodium-wrappers).\n\nErsetzen Sie im folgenden Beispiel `YOUR_SECRET` durch den Klartextwert, den Sie verschlüsseln möchten. Ersetzen Sie `YOUR_BASE64_KEY` durch Ihren Base64-codierten öffentlichen Schlüssel. Die Dokumentation für den Endpunkt, den Sie zum Erstellen eines geheimen Schlüssels verwenden, teilt Ihnen mit, welchen Endpunkt Sie verwenden können, um den öffentlichen Schlüssel abzurufen. \n`ORIGINAL` ist kein Platzhalter; es ist ein Parameter für die libsodium-wrappers-Bibliothek.\n\n```javascript copy\nconst sodium = require('libsodium-wrappers')\n\nconst secret = 'YOUR_SECRET'\nconst key = 'YOUR_BASE64_KEY'\n\n//Check if libsodium is ready and then proceed.\nsodium.ready.then(() => {\n  // Convert the secret and key to a Uint8Array.\n  let binkey = sodium.from_base64(key, sodium.base64_variants.ORIGINAL)\n  let binsec = sodium.from_string(secret)\n\n  // Encrypt the secret using libsodium\n  let encBytes = sodium.crypto_box_seal(binsec, binkey)\n\n  // Convert the encrypted Uint8Array to Base64\n  let output = sodium.to_base64(encBytes, sodium.base64_variants.ORIGINAL)\n\n  // Print the output\n  console.log(output)\n});\n```\n\n## Beispiel zum Verschlüsseln eines geheimen Schlüssels mithilfe von Python\n\nWenn Sie Python 3 verwenden, können Sie Ihr Geheimnis mithilfe der PyNaCl-Bibliothek verschlüsseln. Weitere Informationen finden Sie unter [PyNaCl](https://pynacl.readthedocs.io/en/latest/public/#nacl-public-sealedbox).\n\nErsetzen Sie im folgenden Beispiel `YOUR_SECRET` durch den Klartextwert, den Sie verschlüsseln möchten. Ersetzen Sie `YOUR_BASE64_KEY` durch Ihren Base64-codierten öffentlichen Schlüssel. Die Dokumentation für den Endpunkt, den Sie zum Erstellen eines geheimen Schlüssels verwenden, teilt Ihnen mit, welchen Endpunkt Sie verwenden können, um den öffentlichen Schlüssel abzurufen.\n\n```python copy\nfrom base64 import b64encode\nfrom nacl import encoding, public\n\ndef encrypt(public_key: str, secret_value: str) -> str:\n  \"\"\"Encrypt a Unicode string using the public key.\"\"\"\n  public_key = public.PublicKey(public_key.encode(\"utf-8\"), encoding.Base64Encoder())\n  sealed_box = public.SealedBox(public_key)\n  encrypted = sealed_box.encrypt(secret_value.encode(\"utf-8\"))\n  return b64encode(encrypted).decode(\"utf-8\")\n\nencrypt(\"YOUR_BASE64_KEY\", \"YOUR_SECRET\")\n```\n\n## Beispiel zum Verschlüsseln eines geheimen Schlüssels mit C#\n\nWenn Sie C# verwenden, können Sie Ihr Geheimnis mithilfe des Natrium.Core-Pakets verschlüsseln. Weitere Informationen finden Sie unter [Natrium.Core](https://www.nuget.org/packages/Sodium.Core/).\n\nErsetzen Sie im folgenden Beispiel `YOUR_SECRET` durch den Klartextwert, den Sie verschlüsseln möchten. Ersetzen Sie `YOUR_BASE64_KEY` durch Ihren Base64-codierten öffentlichen Schlüssel. Die Dokumentation für den Endpunkt, den Sie zum Erstellen eines geheimen Schlüssels verwenden, teilt Ihnen mit, welchen Endpunkt Sie verwenden können, um den öffentlichen Schlüssel abzurufen.\n\n```csharp copy\nvar secretValue = System.Text.Encoding.UTF8.GetBytes(\"YOUR_SECRET\");\nvar publicKey = Convert.FromBase64String(\"YOUR_BASE64_KEY\");\n\nvar sealedPublicKeyBox = Sodium.SealedPublicKeyBox.Create(secretValue, publicKey);\n\nConsole.WriteLine(Convert.ToBase64String(sealedPublicKeyBox));\n```\n\n## Beispiel zum Verschlüsseln eines geheimen Schlüssels mithilfe von Ruby\n\nWenn Sie Ruby verwenden, können Sie Ihr Geheimnis mit dem RbNaCl-Juwel verschlüsseln. Weitere Informationen finden Sie unter [RbNaCl](https://github.com/RubyCrypto/rbnacl).\n\nErsetzen Sie im folgenden Beispiel `YOUR_SECRET` durch den Klartextwert, den Sie verschlüsseln möchten. Ersetzen Sie `YOUR_BASE64_KEY` durch Ihren Base64-codierten öffentlichen Schlüssel. Die Dokumentation für den Endpunkt, den Sie zum Erstellen eines geheimen Schlüssels verwenden, teilt Ihnen mit, welchen Endpunkt Sie verwenden können, um den öffentlichen Schlüssel abzurufen.\n\n```ruby copy\nrequire \"rbnacl\"\nrequire \"base64\"\n\nkey = Base64.decode64(\"YOUR_BASE64_KEY\")\npublic_key = RbNaCl::PublicKey.new(key)\n\nbox = RbNaCl::Boxes::Sealed.from_public_key(public_key)\nencrypted_secret = box.encrypt(\"YOUR_SECRET\")\n\n# Print the base64 encoded secret\nputs Base64.strict_encode64(encrypted_secret)\n```"}