SSL/TLSの基本的な仕組みと設定方法

Security

 

SSL証明書の基本的な仕組み

 

SSL(Secure Sockets Layer)とTLS(Transport Layer Security)についての記事です。

 

一般的なSSL通信の仕組み(前提条件)
  • WebブラウザとWebサーバは共通鍵暗号方式で暗号化されたデータを送受信する
  • 共通鍵を安全に配布するために公開鍵暗号方式を採用する
  • ルート証明書、中間証明書、SSLサーバ証明書の3種類によりセキュリティを確保する

 

SSL/TLSの目的
  • データの盗聴を防ぐ
  • データの改ざんを防ぐ
  • なりすましを防ぐ
  • 会社の実在証明ができる

 

SSL証明書の違い
  • ルート証明書
    • Webブラウザ(Google ChromやFirefox)に予めインストールされている
  • 中間証明書
    • 各認証局のホームページより自由にダウンロードできる
    • 管理者がWebサーバ側にインストールする
    • セキュリティインシデントによる失効処理時の影響を軽減する
  • サーバ証明書
    • CSRを作成して送ることで認証局により発行される
    • 管理者がWebサーバ側にインストールする
    • 有効期限が最長で397日
    • ドメイン認証、OV認証、EV認証の3種類に分けられる

 

SSLサーバ証明書の種類
  • ドメイン認証型(クイック認証SSL)
    • ドメインの所有権を確認
  • 企業認証型OV
    • ドメイン認証に加え企業の存在確認
  • 企業実在拡張認証型EV(Extended Validation)
    • ドメイン認証、企業認証に加え登記事項証明書等の確認
    • アドレスバーが緑色になる

 

認証局
  • GMO GlobalSign(GMOグローバルサイン)
  • Cybertrust(サイバートラスト)
  • GeoTrust(ジオトラスト)
  • DigiCert(デジサート)
    • 2017年にはシマンテック(VeriSign)の電子証明書事業を買収

 

 

一般的なSSL通信の仕組み
  • 手順1
    HTTPSリクエスト(Webブラウザ→Webサーバ)
    • WebブラウザからWebサーバへ[https://]によるアクセスを開始
  • 手順2
    SSLサーバ証明書を送信(Webサーバ→Webブラウザ)
    • WebサーバからWebブラウザに公開鍵とSSLサーバ証明書を送信
    • 有効なSSLサーバ証明書がインストールされていなければ一時的に生成した公開鍵を送信
  • 手順3
    ルート証明書による照合(Webブラウザ)
    • Webブラウザにて予め用意されているルート証明書でSSLサーバ証明書を照合
    • 問題が無ければルート認証局の公開鍵でSSLサーバ証明書を復号化し、Webサーバの公開鍵を取り出す
    • 公開鍵をもとに共通鍵を暗号化する
  • 手順4
    共通鍵の送信(Webブラウザ→Webサーバ)
    • Webブラウザにて暗号化された共通鍵を送付する
    • 暗号化した共通鍵をWebサーバに送信
  • 手順5
    共通鍵による通信(Webサーバ)
    • 共通鍵を秘密鍵で複合する
  • 手順6
    共通鍵による通信(Webブラウザ⇔Webサーバ)
    • Webブラウザによって作成された共通鍵いより暗号化通信を実現

 

SSL証明書の運用方法(IIS)

IIS(Internet Information Services)によるサーバ証明書の一般的な構築手順は以下の通りです。

一般的なSSL証明書の運用手順通信の仕組み
  • 手順1
    CSRファイル(Certificate Signing Request)の作成(Webサーバ)
    • 国名、住所、組織名、部門名、コモンネームを入力する
    • 暗号化の種類、ビット長を入力する
    • 必要に応じてTSV形式に変換する
  • 手順2
    SSLサーバ証明書の発行申請を送る
    • 認証局に対して証明書の発行申請書を送る
    • 認証局側にて発行申請書をもとに証明書を作成する
  • 手順3
    SSLサーバ証明書を受け取る
    • 認証局より証明書を受け取る
  • 手順4
    中間CA証明書を取得、インストールする
    • 認証局のホームページより中間証明書をダウンロードする
      • 中間CA証明書の更新が無い場合は不要
    • 中間証CA明書をインストールする
      • ダウロードした中間CA証明書を実行する
      • 証明書インポートウィザードより保存場所を設定する

     

  • 手順5
    IISマネージャーよりSSLサーバ証明書をインストールする
    • 新しい証明書をインストールする
    • 古い証明書をバックアップ(エクスポート)および削除する
    • 新しい証明書を設定(サイトバウンド)する

 

  
CSR(証明書発行要求/Certificate Signing Request)CSRを認証局に送り証明書を発行する
TSV(Tab Separated Values)タブ区切りのファイルの形式
DER(Distinguished Encoding Rules)DERでエンコーディング(符号化)されたバイナリ形式の証明書
PEM(Privacy Enhanced Mail)Base64でエンコーディング(符号化)されたテキスト形式の証明書
CRT証明書
CER証明書、Microsoftの形式
PKCS12(Public-Key Cryptography Standards/p12)
pfx(Personal Information Exchange)
RSA

 

 

SSL証明書の運用方法(NGINX)

 

一般的なSSL証明書の運用手順通信の仕組み
  • 手順1
    CSRファイル(Certificate Signing Request)の作成(Webサーバ)
    • 国名、住所、組織名、部門名、コモンネームを入力する
    • 暗号化の種類、ビット長を入力する
    • 必要に応じてTSV形式に変換する
  • 手順2
    SSLサーバ証明書の発行申請を送る
    • 認証局に対して証明書の発行申請書を送る
    • 認証局側にて発行申請書をもとに証明書を作成する
  • 手順3
    SSLサーバ証明書を受け取る
    • 認証局より証明書を受け取る
  • 手順4
    中間CA証明書を取得、インストールする
    • 認証局のホームページより中間証明書をダウンロードする
      • 中間CA証明書の更新が無い場合は不要
    • 中間証CA明書をインストールする
      • ダウロードした中間CA証明書を実行する
      • 証明書インポートウィザードより保存場所を設定する

     

  • 手順5
    IISマネージャーよりSSLサーバ証明書をインストールする
    • 新しい証明書をインストールする
    • 古い証明書をバックアップ(エクスポート)および削除する
    • 新しい証明書を設定(サイトバウンド)する

 

 

マンドです。

opensslコマンドによる秘密鍵の作成方法は以下の2パターンがあります。

秘密鍵にパスフレーズを設定する 秘密鍵にパスフレーズを設定しない


# 秘密鍵を作成する
openssl genrsa -out server.key 2048
# 秘密鍵をもとにCSRを作成する
openssl req -new -key server.key -out server.csr
# 秘密鍵をCSRを同時に作成するコマンド
openssl req -new -newkey rsa:2048 -nodes -keyout server.key -out server.csr

開放ポートなどを確認するコマンドです。[netstat]の代替コマンドです。

 

Linuxサーバの場合、mod_sslパッケージをインストールすることで、ssl.confが作成されます。ssl.confでは以下のファイルを指定をします。

項目設定値
SSLCertificateKeyFile秘密鍵を指定
SSLCertificateFile証明書を指定
SSLCertificateChainFile中間証明書を指定

 

コメント

タイトルとURLをコピーしました