GNU/Linux >> Linux の 問題 >  >> Panels >> OpenVPN

Ubuntu22.04で認証局を設定および構成する方法

はじめに

認証局(CA)は、インターネット上のIDを検証するためのデジタル証明書の発行を担当するエンティティです。パブリックCAは、一般の人々に提供されるWebサイトやその他のサービスのIDを確認するための一般的な選択肢ですが、プライベートCAは通常、クローズドグループやプライベートサービスに使用されます。

プライベート認証局を構築すると、クライアントとサーバー間の暗号化された接続を必要とするプログラムを構成、テスト、および実行できるようになります。プライベートCAを使用すると、インフラストラクチャ内のユーザー、サーバー、または個々のプログラムとサービスの証明書を発行できます。

独自のプライベートCAを使用するLinux上のプログラムの例としては、OpenVPNとPuppetがあります。開発環境とステージング環境をTLSを使用して接続を暗号化する本番サーバーと一致させるために、プライベートCAによって発行された証明書を使用するようにWebサーバーを構成することもできます。

このガイドでは、Ubuntu 22.04サーバーにプライベート認証局を設定し、新しいCAを使用してテスト証明書を生成して署名します。また、CAサーバーの公開証明書をオペレーティングシステムの証明書ストアにインポートして、CAとリモートサーバーまたはユーザー間の信頼の鎖を確認する方法についても学習します。最後に、証明書を失効させ、証明書失効リストを配布して、許可されたユーザーとシステムのみがCAに依存するサービスを使用できるようにする方法を学習します。

前提条件

このチュートリアルを完了するには、CAサーバーをホストするUbuntu22.04サーバーにアクセスする必要があります。 ルート以外を構成する必要があります sudoを持つユーザー このガイドを開始する前に特権。 Ubuntu 22.04の初期サーバーセットアップガイドに従って、適切な権限を持つユーザーをセットアップできます。リンクされたチュートリアルでは、ファイアウォールも設定されます 、これはこのガイド全体で実施されていると想定されています。

このサーバーは、CAサーバーと呼ばれます。 このチュートリアルでは。

CAServerがスタンドアロンシステムであることを確認します。これは、証明書要求のインポート、署名、および取り消しにのみ使用されます。他のサービスを実行しないでください。理想的には、CAを積極的に使用していないときは、オフラインになるか、完全にシャットダウンされます。

注: このチュートリアルの最後のセクションは、証明書の署名と取り消しについて学習したい場合はオプションです。これらの練習手順を完了することを選択した場合は、2台目のUbuntu 22.04サーバーが必要になります。または、UbuntuまたはDebianを実行している独自のローカルLinuxコンピューター、あるいはこれらのいずれかから派生したディストリビューションを使用することもできます。

ステップ1—Easy-RSAのインストール

このチュートリアルの最初のタスクは、easy-rsaをインストールすることです。 CAサーバ上の一連のスクリプト。 easy-rsa は、秘密鍵と公開ルート証明書を生成するために使用する認証局管理ツールであり、CAに依存するクライアントとサーバーからの要求に署名するために使用します。

初期設定手順で作成したroot以外のsudoユーザとしてCAServerにログインし、以下を実行します。

  1. sudo apt update
  2. sudo apt install easy-rsa

パッケージをダウンロードしてインストールするように求められます。 yを押します パッケージをインストールすることを確認します。

この時点で、必要なものがすべてセットアップされ、Easy-RSAを使用する準備が整いました。次のステップでは、公開鍵インフラストラクチャを作成してから、認証局の構築を開始します。

ステップ2—公開鍵インフラストラクチャディレクトリの準備

これで、easy-rsaがインストールされました。 、CAサーバー上にスケルトン公開鍵インフラストラクチャ(PKI)を作成するときが来ました。 root以外のユーザーとしてログインしていることを確認し、easy-rsaを作成します。 ディレクトリ。 sudoを使用しないことを確認してください 通常のユーザーは昇格された特権なしでCAを管理および操作する必要があるため、次のコマンドのいずれかを実行します。

  1. mkdir ~/easy-rsa

これにより、easy-rsaという新しいディレクトリが作成されます ホームフォルダにあります。このディレクトリを使用して、easy-rsaを指すシンボリックリンクを作成します 前の手順でインストールしたパッケージファイル。これらのファイルは、/usr/share/easy-rsaにあります。 CAサーバー上のフォルダ。

lnを使用してシンボリックリンクを作成します コマンド:

  1. ln -s /usr/share/easy-rsa/* ~/easy-rsa/

注: 他のガイドがeasy-rsaをコピーするように指示する場合があります ファイルをPKIディレクトリにパッケージ化する場合、このチュートリアルではシンボリックリンクアプローチを採用しています。その結果、easy-rsaの更新はすべて パッケージはPKIのスクリプトに自動的に反映されます。

新しいPKIディレクトリへのアクセスを制限するには、所有者のみがchmodを使用してアクセスできるようにします。 コマンド:

  1. chmod 700 /home/sammy/easy-rsa

最後に、easy-rsa内でPKIを初期化します ディレクトリ:

  1. cd ~/easy-rsa
  2. ./easyrsa init-pki
Outputinit-pki complete; you may now create a CA or requests.
Your newly created PKI dir is: /home/sammy/easy-rsa/pki

このセクションを完了すると、認証局の作成に必要なすべてのファイルを含むディレクトリが作成されます。次のセクションでは、CAの秘密鍵と公開証明書を作成します。

ステップ3—認証局の作成

CAの秘密鍵と証明書を作成する前に、varsというファイルを作成してデータを入力する必要があります。 いくつかのデフォルト値があります。まず、cd easy-rsaに ディレクトリ、次にvarsを作成および編集します nanoのファイル またはお好みのテキストエディタ:

  1. cd ~/easy-rsa
  2. nano vars

ファイルを開いたら、次の行を貼り付け、強調表示された各値を編集して、独自の組織情報を反映させます。ここで重要なのは、値を空白のままにしないようにすることです。

~/easy-rsa/varsset_var EASYRSA_REQ_COUNTRY    "US"
set_var EASYRSA_REQ_PROVINCE   "NewYork"
set_var EASYRSA_REQ_CITY       "New York City"
set_var EASYRSA_REQ_ORG        "DigitalOcean"
set_var EASYRSA_REQ_EMAIL      "[email protected]"
set_var EASYRSA_REQ_OU         "Community"
set_var EASYRSA_ALGO           "ec"
set_var EASYRSA_DIGEST         "sha512"

終了したら、ファイルを保存して閉じます。 nanoを使用している場合 、CTRL+Xを押すとこれを行うことができます 、次にY およびENTER 確認するために。これで、CAを構築する準備が整いました。

認証局のルート公開鍵と秘密鍵のペアを作成するには、./easy-rsaを実行します。 今度はbuild-caを使用してもう一度コマンドを実行します オプション:

  1. ./easyrsa build-ca

出力には、OpenSSLバージョンに関するいくつかの行が表示され、キーペアのパスフレーズを入力するように求められます。必ず強力なパスフレーズを選択し、安全な場所に書き留めてください。証明書に署名したり取り消したりするなど、CAとやり取りする必要があるときはいつでも、パスフレーズを入力する必要があります。

また、CAの共通名(CN)を確認するように求められます。 CNは、認証局のコンテキストでこのマシンを参照するために使用される名前です。 CAの共通名には任意の文字列を入力できますが、簡単にするために、Enterキーを押してデフォルト名を受け入れます。

Output. . .
Enter New CA Key Passphrase:
Re-Enter New CA Key Passphrase:
. . .
Common Name (eg: your user, host, or server name) [Easy-RSA CA]:

CA creation complete and you may now import and sign cert requests.
Your new CA certificate file for publishing is at:
/home/sammy/easy-rsa/pki/ca.crt

注: CAとやり取りするたびにパスワードの入力を求められたくない場合は、build-caを実行できます。 nopassを使用したコマンド このようなオプション:

  1. ./easyrsa build-ca nopass

これで、2つの重要なファイルができました— ~/easy-rsa/pki/ca.crt および~/easy-rsa/pki/private/ca.key —認証局のパブリックコンポーネントとプライベートコンポーネントを構成します。

  • ca.crt CAの公開証明書ファイルです。ユーザー、サーバー、およびクライアントは、この証明書を使用して、それらが同じ信頼のWebの一部であることを確認します。 CAを使用するすべてのユーザーとサーバーは、このファイルのコピーを持っている必要があります。すべての関係者は、誰かがシステムになりすまして中間者攻撃を実行していないことを確認するために、公開証明書に依存します。

  • ca.key CAがサーバーとクライアントの証明書に署名するために使用する秘密鍵です。攻撃者があなたのCAにアクセスし、次にあなたのca.keyにアクセスした場合 ファイル、あなたはあなたのCAを破壊する必要があります。これが、ca.keyが ファイルはのみである必要があります CAマシン上にあり、理想的には、追加のセキュリティ対策として証明書要求に署名しない場合は、CAマシンをオフラインにしておく必要があります。

これで、CAが配置され、証明書要求に署名したり、証明書を失効させたりするために使用できるようになります。

ステップ4—認証局の公開証明書の配布

これで、CAが構成され、それを使用するように構成するシステムの信頼のルートとして機能する準備が整いました。 CAの証明書をOpenVPNサーバー、Webサーバー、メールサーバーなどに追加できます。ネットワーク内の別のユーザーまたはサーバーのIDを確認する必要があるユーザーまたはサーバーには、ca.crtのコピーが必要です。 オペレーティングシステムの証明書ストアにインポートされたファイル。

CAの公開証明書を別のサーバーやローカルコンピューターなどの2番目のLinuxシステムにインポートするには、最初にca.crtのコピーを取得します。 CAサーバーからのファイル。 catを使用できます コマンドを使用して端末に出力し、証明書をインポートしている2番目のコンピューター上のファイルにコピーして貼り付けます。 scpなどのツールを使用することもできます 、rsync システム間でファイルを転送します。ただし、nanoでコピーアンドペーストを使用します すべてのシステムで機能するため、このステップで。

CA Serverのroot以外のユーザとして、次のコマンドを実行します。

  1. cat ~/easy-rsa/pki/ca.crt

次のような出力が端末に表示されます。

Output-----BEGIN CERTIFICATE-----
MIIDSzCCAjOgAwIBAgIUcR9Crsv3FBEujrPZnZnU4nSb5TMwDQYJKoZIhvcNAQEL
BQAwFjEUMBIGA1UEAwwLRWFzeS1SU0EgQ0EwHhcNMjAwMzE4MDMxNjI2WhcNMzAw
. . .
. . .
-----END CERTIFICATE-----

-----BEGIN CERTIFICATE-----を含むすべてをコピーします および-----END CERTIFICATE----- 線とダッシュ。

2番目のLinuxシステムでは、nanoを使用します または、/tmp/ca.crtというファイルを開くための好みのテキストエディタ :

  1. nano /tmp/ca.crt

CAServerからコピーした内容をエディタに貼り付けます。終了したら、ファイルを保存して閉じます。 nanoを使用している場合 、CTRL+Xを押すとこれを行うことができます 、次にY およびENTER 確認します。

これで、ca.crtのコピーができました。 2番目のLinuxシステムでファイルを作成したら、証明書をオペレーティングシステムの証明書ストアにインポートします。

UbuntuおよびDebianベースのシステムでは、root以外のユーザーとして次のコマンドを実行して、証明書をインポートします。

UbuntuとDebianから派生したディストリビューション
  1. sudo cp /tmp/ca.crt /usr/local/share/ca-certificates/
  2. sudo update-ca-certificates

CentOS、Fedora、またはRedHatベースのシステムにCAサーバーの証明書をインポートするには、前の例と同じように、ファイルの内容をコピーしてシステムに/tmp/ca.crtというファイルに貼り付けます。 。次に、証明書を/etc/pki/ca-trust/source/anchors/にコピーします 、次にupdate-ca-trustを実行します コマンド。

CentOS、Fedora、RedHatディストリビューション
  1. sudo cp /tmp/ca.crt /etc/pki/ca-trust/source/anchors/
  2. sudo update-ca-trust

これで、2番目のLinuxシステムは、CAサーバーによって署名されたすべての証明書を信頼します。

注: CAをWebサーバーで使用していて、Firefoxをブラウザーとして使用している場合は、パブリックca.crtをインポートする必要があります。 Firefoxに直接証明書を送信します。 Firefoxはローカルオペレーティングシステムの証明書ストアを使用しません。 CAの証明書をFirefoxに追加する方法の詳細については、Firefoxでの認証局(CA)の設定に関するMozillaのこのサポート記事を参照してください。

CAを使用してWindows環境またはデスクトップコンピューターと統合している場合は、certutil.exeの使用方法に関するドキュメントを参照してください。 CA証明書をインストールします。

このチュートリアルを別のチュートリアルの前提条件として使用している場合、または証明書に署名して取り消す方法に精通している場合は、ここで停止できます。証明書に署名して取り消す方法について詳しく知りたい場合は、次のオプションのセクションで各プロセスについて詳しく説明します。

(オプション)—証明書署名要求の作成と証明書の取り消し

チュートリアルの次のセクションはオプションです。これまでのすべての手順を完了した場合は、他のチュートリアルの前提条件として使用できる、完全に構成され機能している認証局があります。 CAのca.crtをインポートできます CAによって署名されたネットワーク内の証明書をファイルして確認します。

証明書要求に署名する方法と証明書を取り消す方法について練習して詳しく知りたい場合は、これらのオプションのセクションで両方のプロセスがどのように機能するかを説明します。

(オプション)—実践証明書リクエストの作成と署名

CAを使用する準備ができたので、秘密鍵と証明書の要求の生成を練習して、署名と配布のプロセスに慣れることができます。

証明書署名要求(CSR)は、要求システムに関する識別情報である公開鍵と、要求側の秘密鍵を使用して作成された要求自体の署名の3つの部分で構成されます。秘密鍵は秘密にされ、署名された公開証明書を持っている人なら誰でも復号化できる情報を暗号化するために使用されます。

次の手順は、2番目のUbuntuまたはDebianシステム、あるいはこれらのいずれかから派生したディストリビューションで実行されます。別のリモートサーバー、またはラップトップやデスクトップコンピューターなどのローカルLinuxマシンの場合があります。 easy-rsa以降 すべてのシステムでデフォルトで使用できるわけではありません。opensslを使用します 練習用の秘密鍵と証明書を作成するためのツール。

openssl 通常、ほとんどのLinuxディストリビューションにはデフォルトでインストールされますが、念のため、システムで次のコマンドを実行してください。

  1. sudo apt update
  2. sudo apt install openssl

opensslをインストールするように求められたら yと入力します インストール手順を続行します。これで、opensslを使用して実践的なCSRを作成する準備が整いました。 。

CSRを作成するために完了する必要がある最初のステップは、秘密鍵を生成することです。 opensslを使用して秘密鍵を作成するには 、practice-csrを作成します ディレクトリを作成し、その中にキーを生成します。 sammy-serverという架空のサーバーに対してこのリクエストを行います 、ユーザーまたは別のCAを識別するために使用される証明書を作成するのとは対照的です。

  1. mkdir ~/practice-csr
  2. cd ~/practice-csr
  3. openssl genrsa -out sammy-server.key

秘密鍵ができたので、ここでもopensslを使用して対応するCSRを作成できます。 効用。国、州、市などのいくつかのフィールドに入力するように求められます。 . フィールドを空白のままにしておきたいが、これが実際のCSRである場合は、場所と組織に正しい値を使用するのが最善であることに注意してください。

  1. openssl req -new -key sammy-server.key -out sammy-server.req
Output. . .
-----
Country Name (2 letter code) [XX]:US
State or Province Name (full name) []:New York
Locality Name (eg, city) [Default City]:New York City
Organization Name (eg, company) [Default Company Ltd]:DigitalOcean
Organizational Unit Name (eg, section) []:Community
Common Name (eg, your name or your server's hostname) []:sammy-server
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

これらの値をopensslの一部として自動的に追加する場合 インタラクティブプロンプトを介する代わりに呼び出し、-subjを渡すことができます OpenSSLへの引数。練習場所、組織、サーバー名に一致するように、強調表示された値を必ず編集してください:

  1. openssl req -new -key sammy-server.key -out server.req -subj \
  2. /C=US/ST=New\ York/L=New\ York\ City/O=DigitalOcean/OU=Community/CN=sammy-server

CSRの内容を確認するには、opensslを使用してリクエストファイルを読み込むことができます。 内部のフィールドを調べます:

  1. openssl req -in sammy-server.req -noout -subject
Outputsubject=C = US, ST = New York, L = New York City, O = DigitalOcean, OU = Community, CN = sammy-server

練習証明書リクエストの件名に満足したら、sammy-server.reqをコピーします scpを使用してCAサーバーにファイルを送信します :

  1. scp sammy-server.req sammy@your_ca_server_ip:/tmp/sammy-server.req

このステップでは、sammy-serverという架空のサーバーの証明書署名要求を生成しました。 。実際のシナリオでは、要求は、テスト用にTLS証明書を必要とするステージングまたは開発Webサーバーのようなものからのものである可能性があります。または、ユーザーがVPNに接続できるように証明書を要求しているOpenVPNサーバーから取得することもできます。次のステップでは、CAサーバーの秘密鍵を使用して証明書署名要求に署名します。

(オプション)—CSRに署名する

前の手順では、架空のサーバーの練習証明書リクエストとキーを作成しました。 /tmpにコピーしました CAサーバー上のディレクトリ。署名が必要なCSR要求を送信する実際のクライアントまたはサーバーがある場合に使用するプロセスをエミュレートします。

架空のシナリオを続けると、CAServerは練習用証明書をインポートして署名する必要があります。証明書要求がCAによって検証され、サーバーに中継されると、認証局を信頼するクライアントは、新しく発行された証明書も信頼できるようになります。

easy-rsaが存在するCAのPKI内で動作するため ユーティリティが利用可能で、署名手順はeasy-rsaを使用します opensslを使用するのではなく、物事を簡単にするユーティリティ 前の例で行ったように直接。

架空のCSRに署名するための最初のステップは、easy-rsaを使用して証明書要求をインポートすることです。 スクリプト:

  1. cd ~/easy-rsa
  2. ./easyrsa import-req /tmp/sammy-server.req sammy-server
Output. . .
The request has been successfully imported with a short name of: sammy-server
You may now use this name to perform signing operations on this request.

これで、easyrsaを実行してリクエストに署名できます sign-reqを使用したスクリプト オプションの後に、CSRに含まれる要求タイプと共通名が続きます。リクエストタイプは、clientのいずれかになります。 、server 、またはca 。架空のサーバーの証明書を使用して練習しているため、必ずserverを使用してください リクエストタイプ:

  1. ./easyrsa sign-req server sammy-server

出力では、リクエストが信頼できるソースからのものであることを確認するように求められます。 yesと入力します 次に、ENTERを押します これを確認するには:

OutputYou are about to sign the following certificate.
Please check over the details shown below for accuracy. Note that this request
has not been cryptographically verified. Please be sure it came from a trusted
source or that you have verified the request checksum with the sender.

Request subject, to be signed as a server certificate for 825 days:

subject=
    countryName               = US
    stateOrProvinceName       = New York
    localityName              = New York City
    organizationName          = DigitalOcean
    organizationalUnitName    = Community
    commonName                = sammy-server


Type the word 'yes' to continue, or any other input to abort.
  Confirm request details: yes
. . .

CAキーを暗号化した場合は、この時点でパスワードの入力を求められます。

次のような出力が表示されます:

OutputCheck that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName           :PRINTABLE:'US'
stateOrProvinceName   :ASN.1 12:'New York'
localityName          :ASN.1 12:'New York City'
organizationName      :ASN.1 12:'DigitalOcean'
organizationalUnitName:ASN.1 12:'Community'
commonName            :ASN.1 12:'sammy-server'
Certificate is to be certified until Jul 21 13:59:08 2024 GMT (825 days)

Write out database with 1 new entries
Data Base Updated

Certificate created at: /home/sammy/easy-rsa/pki/issued/sammy-server.crt

これらの手順が完了すると、sammy-server.reqに署名したことになります。 /home/sammy/easy-rsa/pki/private/ca.keyにあるCAサーバーの秘密鍵を使用したCSR 。結果のsammy-server.crt ファイルには、練習用サーバーの公開暗号化キーと、CAサーバーからの新しい署名が含まれています。署名のポイントは、CAを信頼するすべての人に、sammy-serverも信頼できることを伝えることです。 証明書。

この要求がWebサーバやVPNサーバなどの実サーバに対するものである場合、CAサーバでの最後のステップは、新しいsammy-server.crtを配布することです。 およびca.crt CAサーバーからCSR要求を行ったリモートサーバーへのファイル:

  1. scp pki/issued/sammy-server.crt sammy@your_server_ip:/tmp
  2. scp pki/ca.crt sammy@your_server_ip:/tmp

この時点で、発行された証明書をWebサーバー、VPN、構成管理ツール、データベースシステムなどで使用したり、クライアント認証の目的で使用したりできるようになります。

(オプション)—証明書の取り消し

場合によっては、ユーザーまたはサーバーが証明書を使用できないようにするために、証明書を取り消す必要があります。誰かのラップトップが盗まれたか、Webサーバーが侵害されたか、従業員または請負業者が組織を離れた可能性があります。

証明書を取り消すには、一般的なプロセスは次の手順に従います。

  1. ./easyrsa revoke client_name コマンド。
  2. ./easyrsa gen-crlを使用して新しいCRLを生成します コマンド。
  3. 更新されたcrl.pemを転送します CAに依存する1つまたは複数のサーバーにファイルを送信し、それらのシステムで、それを参照するプログラムに必要な1つまたは複数のディレクトリにファイルをコピーします。
  4. CAとCRLファイルを使用するすべてのサービスを再起動します。

このプロセスを使用して、以前に発行した証明書をいつでも取り消すことができます。次のセクションでは、revokeから始めて、各ステップについて詳しく説明します。 コマンド。

証明書の取り消し

証明書を取り消すには、easy-rsaに移動します CAサーバー上のディレクトリ:

  1. cd ~/easy-rsa

次に、easyrsaを実行します revokeを使用したスクリプト オプションの後に、取り消すクライアント名が続きます。上記の実践例に従うと、証明書の共通名はsammy-serverです。 :

  1. ./easyrsa revoke sammy-server

これにより、yesと入力して失効を確認するよう求められます :

OutputPlease confirm you wish to revoke the certificate with the following subject:

subject=
    commonName                = sammy-server


Type the word 'yes' to continue, or any other input to abort.
  Continue with revocation: yes
. . .
Revoking Certificate 8348B3F146A765581946040D5C4D590A
. . .

Revoking Certificateで強調表示されている値に注意してください ライン。この値は、取り消される証明書の一意のシリアル番号です。このセクションの最後のステップで失効リストを調べて、証明書が含まれていることを確認する場合は、この値が必要です。

アクションを確認した後、CAは証明書を取り消します。ただし、CAに依存するリモートシステムには、証明書が取り消されているかどうかを確認する方法がありません。ユーザーとサーバーは、CAの証明書失効リスト(CRL)がCAに依存するすべてのシステムに配布されるまで、引き続き証明書を使用できます。

次のステップでは、CRLを生成するか、既存のcrl.pemを更新します ファイル。

証明書失効リストの生成

証明書を失効させたので、CAサーバー上の失効した証明書のリストを更新することが重要です。失効リストを更新すると、CAに有効な証明書を持っているユーザーとシステムを確認できます。

CRLを生成するには、easy-rsaを実行します gen-crlを使用したコマンド ~/easy-rsa内にあるオプション ディレクトリ:

  1. ./easyrsa gen-crl

ca.keyの作成時にパスフレーズを使用した場合 ファイルの場合、入力するように求められます。 gen-crl コマンドはcrl.pemというファイルを生成します 、そのCAの失効した証明書の更新されたリストが含まれています。

次に、更新されたcrl.pemを転送する必要があります gen-crlを実行するたびに、このCAに依存するすべてのサーバーとクライアントにファイルを送信します 指図。それ以外の場合、クライアントとシステムは、CAを使用するサービスとシステムにアクセスできます。これらのサービスは、証明書の失効ステータスを知る必要があるためです。

証明書失効リストの転送

CAサーバーでCRLを生成したので、CAに依存するリモートシステムにCRLを転送する必要があります。このファイルをサーバーに転送するには、scpを使用できます コマンド。

注: このチュートリアルでは、CRLを手動で生成して配布する方法について説明します。 OCSP-Staplingのような失効リストを配布およびチェックするためのより堅牢で自動化された方法がありますが、これらの方法を構成することはこの記事の範囲を超えています。

root以外のユーザーとしてCAサーバーにログインしていることを確認し、your_server_ipの代わりに独自のサーバーIPまたはDNS名を使用して次のコマンドを実行します。 :

  1. scp ~/easy-rsa/pki/crl.pem sammy@your_server_ip:/tmp

ファイルがリモートシステム上にあるので、最後のステップは、失効リストの新しいコピーでサービスを更新することです。

CRLをサポートするサービスの更新

crl.pemを使用するサービスを更新するために使用する必要のある手順の一覧 ファイルはこのチュートリアルの範囲を超えています。通常、crl.pemをコピーする必要があります サービスが期待する場所にファイルを配置し、systemctlを使用して再起動します 。

新しいcrl.pemでサービスを更新したら ファイルを使用すると、サービスは、失効した証明書を使用しているクライアントまたはサーバーからの接続を拒否できるようになります。

CRLの内容の調査と検証

取り消された証明書のリストを確認するなど、CRLファイルを調べたい場合は、次のopensslを使用します。 easy-rsa内からのコマンド CAサーバー上のディレクトリ:

  1. cd ~/easy-rsa
  2. openssl crl -in pki/crl.pem -noout -text

このコマンドは、opensslがある任意のサーバーまたはシステムで実行することもできます。 crl.pemのコピーとともにインストールされたツール ファイル。たとえば、crl.pemを転送した場合 2番目のシステムにファイルを送信し、sammy-serverが 証明書が取り消された場合は、opensslを使用できます 次のようなコマンドを使用して、ここで強調表示されているものの代わりに、証明書を取り消したときに以前にメモしたシリアル番号に置き換えます。

  1. openssl crl -in /tmp/crl.pem -noout -text |grep -A 1 8348B3F146A765581946040D5C4D590A
Output    Serial Number: 8348B3F146A765581946040D5C4D590A
        Revocation Date: Apr 18 14:00:37 2022 GMT

grepがどのようになっているかに注目してください コマンドは、失効ステップでメモした一意のシリアル番号を確認するために使用されます。これで、証明書失効リストに依存してユーザーやサービスへのアクセスを制限しているシステムで、証明書失効リストの内容を確認できます。

結論

このチュートリアルでは、スタンドアロンのUbuntu22.04サーバーでEasy-RSAパッケージを使用してプライベート認証局を作成しました。 CAに依存する当事者間で信頼モデルがどのように機能するかを調べました。また、練習用サーバーの証明書署名要求(CSR)を作成して署名し、証明書を取り消す方法を学びました。最後に、CAに依存するシステムの証明書失効リスト(CRL)を生成および配布して、サービスにアクセスしてはならないユーザーまたはサーバーがアクセスできないようにする方法を学びました。

Now you can issue certificates for users and use them with services like OpenVPN. You can also use your CA to configure development and staging web servers with certificates to secure your non-production environments. Using a CA with TLS certificates during development can help ensure that your code and environments match your production environment as closely as possible.

If you would like to learn more about how to use OpenSSL, our OpenSSL Essentials:Working with SSL Certificates, Private Keys and CSRs tutorial has lots of additional information to help you become more familiar with OpenSSL fundamentals.


OpenVPN
  1. Ubuntu14.10でNFSサーバーを構成してNFS共有をマウントする方法

  2. Ubuntu20.04にDHCPサーバーをインストールして構成する方法

  3. UbuntuにRedisサーバーをインストールして構成する方法

  1. Ubuntu20.04にNFSサーバーをインストールして構成する方法

  2. Ubuntu22.04でWireGuardを設定する方法

  3. Ubuntu20.04でNFSサーバーとクライアントをセットアップする方法

  1. Ubuntu20.04にVNCをインストールして構成する方法

  2. Ubuntu18.04にVNCをインストールして構成する方法

  3. Ubuntu18.04にNFSサーバーをインストールして構成する方法