2022/07/5

AWSで使われるPEM形式の証明書を詳しく解説

 
  

AWSではPEM形式のキーペアが必要


AWSのAmazon EC2に作成したサーバーをインスタンスと呼びますが、そのインスタンスにログインするにはSSLにいる認証にPEM形式のキーペアを用います。よく使われるログイン名とパスワードは使いません。

暗号化で使われるPEM形式とキーペアについて説明する前に、AWSのインスタンスに接続する際の認証方法について説明します。

パスワードは危険

ターミナルソフトからLinuxサーバーにログインする際、昔からログイン名とパスワードが使われてきました。しかし、この形式はパスワードを破られやすいことから、インターネットに公開するサーバーで使用するべきではありません。

もちろん100文字を超えるランダムな文字列をパスワードにしていれば、そうそう破られることはありません。しかし、そのようなパスワードは人が覚えられません。逆に人が覚えられるパスワードでは容易に類推され破られます。

さらに長く複雑なパスワードをスマホなどに記録させる方法もありますが、それが確実に安全とは言えません。

SSLの公開鍵暗号方式

SSLは、公開されている鍵で暗号化したデータを非公開の鍵でデータに戻す方法を利用し、インターネット上の通信データを暗号化して安全に送信する方法として広く使われています。

そして、この方法のメリットは、公開鍵を持っている方は誰でも暗号化できるものの、それを基のデータに戻すには非公開の鍵が必要な点です。もし非公開の鍵を持っていない方が、暗号化されたデータを受け取っても基のデータには戻せません。

今使われているターミナルソフトはSSLに対応しており、公開鍵を使って暗号化することでサーバーにパスワード無しでログインする機能を持っています。そしてAWSのインスタンスへの接続に利用できるのはこの方法のみです。

公開鍵を作るには

SSLの公開鍵を使った認証を利用するためには、接続するサーバーの公開鍵を入手しなければなりません。Amazon EC2で作成したインスタンスの公開鍵は、Amazon EC2コンソールのキーペアの作成メニューで作成できます。

なお、Amazon EC2に設定したインスタンスへの接続に必要なSSLの公開鍵を含む文字列をキーペアと呼んでいます。

Amazon EC2コンソールでキーペアを作成する際、PEM形式を含む幾つかの形式を選択できます。もしAmazon EC2でLinuxを利用している場合は、PEM形式を選択してください。

さらに、macOSやLinuxではopensslコマンドでPEM形式のキーペアを作成できます。もし、必要な場合は、それぞれのターミナルなどで作成してください。

PEMとは何か


先ほど紹介したように、Amazon EC2のインスタンスに接続するには、Amazon EC2コンソールで作成したPEM形式のキーペアが必要です。では、SSLによる暗号化処理で用いられるPEM形式とは何でしょうか。暗号化処理に詳しくない方のためにPEM形式について解説します。

PEMはメールのフォーマット?

今回紹介するPEMとは、Privacy Enhanced Mailの略で、そのまま日本語に直すとプライバシー強化メールという意味です。つまり電子メールを暗号化することで経路の途中でのぞき見されることなく、安全に送るための方法の1つと言えます。

そしてPEMでは公開鍵暗号方式で使われる代表的な暗号アルゴリズムのRSAが使われています。さらにPEMは、認証局を利用することで改竄防止対策を施した、公開鍵を証明書と呼ばれる形式に変換するセキュアな仕組みです。

AWSでは認証局もサービスしているので、AWSで作成されたPEMは信頼性が保証されています。実際にはキーペアをメールとして送信することはありませんが、このようにAWSで作成されたキーペアは信頼性を保証されたデータです。

PEM形式はLinux用の証明書

先ほど、PEMとは証明書と呼ばれる形式に変換する仕組みと説明しましたが、電子証明に使われる証明書はPEM形式だけではありません。Windowsでは、「.cer」「.p7b」「.pfx」といった形式のファイルも使われます。

一方、今回紹介しているPEM形式はLinuxでよく使われる形式です。

なお、PEMのような電子証明に使われる証明書に含まれるデータには、認証局が必要です。そして認証局はAWSだけではありません。ドメインを販売している会社や認証専門の会社でも認証局のサービスを販売しています。AWSを利用した場合、そのような外部の認証局も利用可能です。

PEM形式のキーペアを利用する方法


Amazon EC2のインスタンスに接続し認証するには、Amazon EC2コンソールで作成するキーペアを利用します。ただしキーペアを正しく設定しないと接続できません。

次からPEM形式のキーペアを正しく利用する方法について紹介します。

キーペア作成手順

キーペアは、AWSの管理サイトの1つであるAmazon EC2コンソールに接続し、「NETWORK & SECURITY」で「Key Pairs」を選択して作成します。なおこの画面の「File format」でPEM形式の「pem」を選んでください。

ただし、この画面で登録する「名前」に対応したキーペアを作成できるのは1回だけです。キーペアの再発行はできません。作成したキーペアはしっかり管理してください。

なお、AWS CLIやPower ShellでAWSを管理できる仕組みを作っている方は、コマンドラインからもキーペアを作成できます。そして、この場合でも「名前」に対応したキーペアを作成できるのは1回だけなので注意が必要です。

ターミナルソフトに設定する

WindowsのターミナルアプリでAmazon EC2のインスタンスに接続する場合、ユーザー名を指定しますがパスワードは指定しません。その代わりにRSAで生成した公開鍵を登録します。

AWSのキーペアはRSAで生成した公開鍵を含んでいるので、インスタンスに接続する場合は先ほど紹介したPEM形式のキーペアを指定してください。

例えば、Windows向けのフリーソフトとしてよく使われるTeraTermでは、SSH認証の画面で「RSA/DSA/ECDSA/ED25519鍵を使う」にチェックを入れ、秘密鍵ボタンでPEM形式のキーペアを指定してください。これでAmazon EC2のインスタンスに接続できます。

PEM形式の証明書を別のLinuxに設定する


Linux同士をSSLでパスワード無しで接続できれば、cronとrysncコマンドを組み合わせて自動でファイルを転送する仕組みなども作れます。そして、cronとrysncコマンドの仕組みで使われるRSAの公開鍵は、今回紹介しているPEM形式のキーペアに含まれる公開鍵と同じです。

では、どうすればキーペアに含まれる公開鍵を使って、rsyncコマンドを実行する環境を作れるでしょうか。次からLinuxサーバーでAWSのキーペアを利用する方法を紹介します。

sshによるパスワード無しログインの設定

Linux同士なら自分のログインディレクトリに公開鍵を設定することで、sshコマンドによるパスワード無しのログインが可能です。具体的には接続したい公開鍵を「~/.ssh/authorized_keys」にコピーします。

では、PEM形式の証明書からどうやって公開鍵のテキストを取り出すのでしょうか。LinuxやmacOSならssh-keygenコマンドを利用してください。

PEM形式の証明書から公開鍵を取り出すコマンド
ssh-keygen -y -f PEM形式の証明書 > 公開鍵のテキスト

このコマンドで取り出した公開鍵のテキストを「~/.ssh/authorized_keys」コピーすることで、sshコマンドでパスワード無しのログインが可能です。

ただし、「~/.ssh/authorized_keys」ファイルのアクセス権が「600」でなければなりません。新規にファイルを作った場合は、ファイルのアクセス権をチェックしましょう。

さらにsshを利用すれば、rsyncコマンドによるネットワークを介したファイルコピーもできます。AWSに作成したインスタンスの管理の他、外部のサーバーと連携した仕組みにも利用できるので、ぜひ、活用してください。

ITエンジニアへのキャリアチェンジならキャリアチェンジアカデミー

この記事の監修者・著者

株式会社オープンアップITエンジニア
株式会社オープンアップITエンジニア
未経験からITエンジニアへのキャリアチェンジを支援するサイト「キャリアチェンジアカデミー」を運営。これまで4500人以上のITエンジニアを未経験から育成・排出してきました。
・AWS、salesforce、LPICの合計認定資格取得件数:2100以上(2023年6月時点)
・AWS Japan Certification Award 2020 ライジングスター of the Year 受賞

おすすめの動画

  • 【未経験からIT業界へ転職するなら】相談窓口とスキルの獲得はここで解決!IT転職が一気に有利に!【キャリアチェンジアカデミー】

  • 【費用一切不要】未経験からIT業界へ転職するならまずはここへ相談!【キャリアチェンジアカデミー】

  • 【何のエンジニアになれるのか?】未経験からITエンジニアを目指すとこんな道がある【キャリアチェンジアカデミー】