MENU

【補足2】Dify導入のためのLinux基礎:OpenSSLでSSL/TLS証明書を準備する方法

当ページのリンクには広告が含まれています。

Difyで自社専用AIチャットボットを構築する際、サーバー(Linux)の準備が第一歩です。Difyはログイン情報、AIのAPIキー、チャット履歴など、非常に機密性の高い情報を取り扱います。そのため、これらの通信をすべて暗号化する「HTTPS」での運用が絶対に必要です。

そのHTTPSを実現するために不可欠なのが「SSL/TLS証明書」です。

この記事では、システムに詳しくない方でもDifyサーバーを安全に運用できるよう、「OpenSSL」というツールを使ってSSL/TLS証明書(の「材料」)を準備する、具体的で簡単な手順を解説します。

目次

1. OpenSSLとは?

OpenSSLは、Linuxに標準で搭載されている「デジタル世界の鍵と錠前を作るための道具箱」のようなものです。SSL/TLS通信に必要な「鍵」や「証明書」を作成・管理するための、オープンソースのソフトウェアライブラリです。

DifyサーバーをHTTPS化するために、私たちはこの道具箱を使って「秘密鍵」と「証明書署名要求(CSR)」という2つの重要なアイテムを作成します。

2. 環境の準備と確認(インストール)

Difyの環境として推奨されるUbuntuなどの最新Linuxディストリビューションには、OpenSSLは最初からインストールされています

念のため、ターミナルで以下のコマンドを実行し、バージョン情報が表示されるか確認しましょう。

# OpenSSLがインストールされているか、バージョンを確認します
openssl version

もし「command not found」と表示された場合(ほとんどありませんが)、以下のコマンドでインストールしてください。

# パッケージリストを最新にします
sudo apt update

# OpenSSLをインストールします
sudo apt install openssl

3. SSL証明書の「材料」を作成する

SSL証明書を取得するには、まず2つの「材料」をサーバー上で作成する必要があります。

  1. 秘密鍵 (private.key)
    • 役割: あなたのサーバーだけが持つ「マスターキー」です。この鍵で通信を暗号化したり、サーバーが本物であることを証明します。
    • 重要度: 絶対にサーバー外部に漏らしてはいけません。 これが漏れると、第三者があなたのサーバーになりすますことが可能です。
  2. CSR (Certificate Signing Request) – 証明書署名要求
    • 役割: AlphaSSLやLet’s Encryptのような「認証局(CA)」に、「私はこのドメインの所有者です。証明書を発行してください」とお願いするための「申請書」です。
    • この申請書には、あなたのドメイン名や組織情報、そして「公開鍵」(秘密鍵とペアになる鍵)が含まれます。

4. 【ステップ1】 秘密鍵 (private.key) の作成

最も重要な「秘密鍵」から作成します。

  1. ターミナルを開き、証明書関連のファイルをまとめておくディレクトリ(フォルダ)を作成して、そこに移動すると管理が楽です。
    # /etc/ssl/private という場所に移動します(Nginxなどで一般的な場所です)
    # もしなければ作成します: sudo mkdir -p /etc/ssl/private
    # sudo chown $USER:$USER /etc/ssl/private (一時的に権限変更)
    # cd /etc/ssl/private
    # もしくは、ホームディレクトリに作業用フォルダを作っても構いません
    mkdir ~/ssl-work cd ~/ssl-work
  2. 以下のコマンドを実行して、秘密鍵(private.key)を生成します。
    # 2048ビットのRSA秘密鍵を「private.key」という名前で生成します
    openssl genrsa -out private.key 2048
    • genrsa: RSAという暗号化方式の鍵を生成するコマンドです。
    • -out private.key: private.key という名前のファイルに出力します。
    • 2048: 鍵の長さ(強度)です。2048ビットが現在一般的です。

これで、カレントディレクトリに private.key ファイルが作成されます。

(補足)パスフレーズについて コマンド実行時にパスフレーズ(秘密鍵を使うためのパスワード)を設定することもできますが、Difyを動かすNginxなどのWebサーバーと連携させる場合、サーバー再起動のたびにパスワード入力を求められ、自動起動に失敗します。 サーバーで使う秘密鍵は、パスフレーズなしで作成するのが一般的です。

5. 【ステップ2】 CSR (証明書署名要求) の作成

次に、作成した「秘密鍵」を使って「申請書(CSR)」を作成します。

  1. ステップ1と同じディレクトリで、以下のコマンドを実行します。
    # 「private.key」を基に、新しい申請書「server.csr」を作成します
    openssl req -new -key private.key -out server.csr
  2. コマンドを実行すると、対話形式で質問が始まります。 これらは申請書に記載される情報です。落ち着いて入力しましょう。
    You are about to be asked to enter information that will be incorporated into your certificate request. —–

CSR入力項目の解説(Difyユーザー向け)

質問項目 (英語)日本語の意味入力例(特にDifyで重要)
Country Name (2 letter code)国名 (2文字コード)JP (日本の場合はJPと入力してEnter)
State or Province Name都道府県名TokyoChiba (ローマ字で入力)
Locality Name (eg, city)市区町村名Shibuya-ku (ローマ字で入力)
Organization Name組織名・会社名My Dify Project (個人の場合。法人の場合は会社名)
Organizational Unit Name部門名IT Department (空欄のままEnterでも可)
Common Name (CN)コモンネーム (ドメイン名)dify.your-domain.com
Email Addressメールアドレスadmin@your-domain.com (あなたの連絡用)
A challenge passwordチャレンジパスワード(入力せずにEnter。空欄のまま進めてください)
An optional company name任意の会社名(入力せずにEnter。空欄のまま進めてください)

最重要ポイント: Common Name (CN)

  • Common Name (CN) は、Difyでアクセスする予定の「ドメイン名(FQDN)」と完全に一致させる必要があります。
  • もし https://dify.example.com でDifyを公開するなら、dify.example.com と正確に入力してください。
  • ここを間違えると、証明書を取得してもブラウザで「ドメイン名が一致しません」というエラーが発生します。

すべて入力し終えると、カレントディレクトリに server.csr ファイルが作成されます。

6. (オプション) 設定ファイルを使ってCSRを「一発で」作成する

毎回対話形式で入力するのが面倒な場合や、www.your-domain.comyour-domain.com の両方に対応する証明書(SAN: サブジェクト代替名)が必要な場合は、設定ファイルを使うと便利です。

  1. openssl.cnf といった名前で以下の設定ファイルを作成します。
    [ req ] distinguished_name = req_distinguished_name req_extensions = v3_req prompt = no
    # これで対話形式の質問をスキップします
    [ req_distinguished_name ] C = JP ST = Tokyo L = Chiyoda-ku O = My Dify Company OU = Tech Team CN = dify.your-domain.com
    # ★あなたのDify用ドメイン名 [ v3_req ] # ここで複数のドメイン名(SAN)を指定できます
    subjectAltName = @alt_names [ alt_names ]
    DNS.1 = dify.your-domain.com DNS.2 = [www.dify.your-domain.com](https://www.dify.your-domain.com)
    # (もし別名も必要なら)
  2. 以下のコマンドで、設定ファイルを読み込んで一発でCSRを作成します。 openssl req -new -key private.key -out server.csr -config openssl.cnf

7. 次のステップ:証明書を取得する

これで、あなたの手元には2つのファイルが準備できました。

  1. private.key (秘密鍵)
  2. server.csr (証明書署名要求 / 申請書)

DifyサーバーをHTTPS化するための次のステップは、この server.csr を使って、本物の「SSL証明書(.crtファイル)」を認証局(CA)から発行してもらうことです。

  • AlphaSSL (ConoHa特典など) を使う場合:
    • server.csr ファイルの中身(-----BEGIN CERTIFICATE REQUEST----- から始まるテキスト全て)をコピーし、AlphaSSLの申込み画面の「CSR」欄に貼り付けます。
    • 詳細は 以下のドキュメントを参照下さい。
  • Let’s Encrypt (Certbot) を使う場合:
    • Certbotツールは、この「秘密鍵の作成」と「CSRの作成」、「CAへの申請」という全プロセスを自動で行ってくれます。
    • 詳細は 以下のドキュメントを参照下さい。

8. OpenSSLの基本操作

ここでは、OpenSSLの基本的な操作方法について説明します。初めて使う方向けに、よく使うコマンドの使い方や、それらのコマンドがどのように役立つかを学んでいきましょう。

ヘルプコマンド

OpenSSLの全てのコマンドを一覧表示し、それぞれのコマンドの目的や使用法を確認します。

openssl help

バージョン確認

インストールされているOpenSSLのバージョンを確認します。これは、使用しているバージョンが最新であることを確認するために重要です。

openssl version

暗号化・復号化

テキストを暗号化し、その暗号化されたテキストを復号化する方法を説明します。これにより、データの安全な保存や送信が可能になります。

暗号化

テキストデータをAES-256-CBCアルゴリズムを使って暗号化します。これは、データを第三者から守るために使用します。AES-256-CBCは非常に強力な暗号化アルゴリズムで、データを安全に保護するために広く使用されています。

echo "Hello, OpenSSL!" | openssl enc -aes-256-cbc -out encrypted.dat

復号化

暗号化されたデータを復号化します。これにより、暗号化されたデータを元の形式に戻すことができます。

openssl enc -d -aes-256-cbc -in encrypted.dat

ハッシュ計算

テキストのSHA-256ハッシュ値を計算します。ハッシュ値はデータの整合性を確認するために使用されます。ハッシュ値は一方向性であり、元のデータに戻すことはできません。暗号化とは異なり、ハッシュはデータを保護するためのものではなく、データが改ざんされていないかを確認するためのものです。

echo -n "Hello, OpenSSL!" | openssl dgst -sha256

まとめ

OpenSSLは、Difyサーバーを安全に運用するための必須ツールです。この記事の手順で「秘密鍵」と「CSR」さえ作成できれば、どんなSSL証明サービス(認証局)にでも対応できます。

まずは openssl genrsa (秘密鍵作成) と openssl req (CSR作成) の2つのコマンドをマスターし、安全なDify環境の構築を進めましょう。

【推奨】業務システム化に有効なアイテム

生成AIを学ぶ

システム化のパートナー(ミラーマスター合同会社)

VPSサーバの選定

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次