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つの「材料」をサーバー上で作成する必要があります。
- 秘密鍵 (private.key)
- 役割: あなたのサーバーだけが持つ「マスターキー」です。この鍵で通信を暗号化したり、サーバーが本物であることを証明します。
- 重要度: 絶対にサーバー外部に漏らしてはいけません。 これが漏れると、第三者があなたのサーバーになりすますことが可能です。
- CSR (Certificate Signing Request) – 証明書署名要求
- 役割: AlphaSSLやLet’s Encryptのような「認証局(CA)」に、「私はこのドメインの所有者です。証明書を発行してください」とお願いするための「申請書」です。
- この申請書には、あなたのドメイン名や組織情報、そして「公開鍵」(秘密鍵とペアになる鍵)が含まれます。
4. 【ステップ1】 秘密鍵 (private.key) の作成
最も重要な「秘密鍵」から作成します。
- ターミナルを開き、証明書関連のファイルをまとめておくディレクトリ(フォルダ)を作成して、そこに移動すると管理が楽です。
# /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 - 以下のコマンドを実行して、秘密鍵(
private.key)を生成します。# 2048ビットのRSA秘密鍵を「private.key」という名前で生成します openssl genrsa -out private.key 2048genrsa: RSAという暗号化方式の鍵を生成するコマンドです。-out private.key:private.keyという名前のファイルに出力します。2048: 鍵の長さ(強度)です。2048ビットが現在一般的です。
これで、カレントディレクトリに private.key ファイルが作成されます。
(補足)パスフレーズについて コマンド実行時にパスフレーズ(秘密鍵を使うためのパスワード)を設定することもできますが、Difyを動かすNginxなどのWebサーバーと連携させる場合、サーバー再起動のたびにパスワード入力を求められ、自動起動に失敗します。 サーバーで使う秘密鍵は、パスフレーズなしで作成するのが一般的です。
5. 【ステップ2】 CSR (証明書署名要求) の作成
次に、作成した「秘密鍵」を使って「申請書(CSR)」を作成します。
- ステップ1と同じディレクトリで、以下のコマンドを実行します。
# 「private.key」を基に、新しい申請書「server.csr」を作成します openssl req -new -key private.key -out server.csr - コマンドを実行すると、対話形式で質問が始まります。 これらは申請書に記載される情報です。落ち着いて入力しましょう。
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 | 都道府県名 | Tokyo や Chiba (ローマ字で入力) |
| 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.com と your-domain.com の両方に対応する証明書(SAN: サブジェクト代替名)が必要な場合は、設定ファイルを使うと便利です。
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) # (もし別名も必要なら)- 以下のコマンドで、設定ファイルを読み込んで一発でCSRを作成します。
openssl req -new -key private.key -out server.csr -config openssl.cnf
7. 次のステップ:証明書を取得する
これで、あなたの手元には2つのファイルが準備できました。
private.key(秘密鍵)server.csr(証明書署名要求 / 申請書)
DifyサーバーをHTTPS化するための次のステップは、この server.csr を使って、本物の「SSL証明書(.crtファイル)」を認証局(CA)から発行してもらうことです。
- AlphaSSL (ConoHa特典など) を使う場合:
server.csrファイルの中身(-----BEGIN CERTIFICATE REQUEST-----から始まるテキスト全て)をコピーし、AlphaSSLの申込み画面の「CSR」欄に貼り付けます。- 詳細は 以下のドキュメントを参照下さい。
DifyのためのLinux設定:ConoHa VPS無料特典「アルファSSL」設定手順Difyサーバーを安全に運用するためのHTTPS化は必須です。前回の記事では Let's Encrypt を使った方法を紹介しましたが、ConoHa VPSの「VPS割引きっぷ」を利用している場合、特典として「アルファSSL」(通常は有料)...
- Let’s Encrypt (Certbot) を使う場合:
- Certbotツールは、この「秘密鍵の作成」と「CSRの作成」、「CAへの申請」という全プロセスを自動で行ってくれます。
- 詳細は 以下のドキュメントを参照下さい。
DifyのためのLinux設定:Let's Encrypt (Certbot) で無料SSL化する手順Difyサーバーを安全に運用するために、通信の暗号化(HTTPS化)は必須です。HTTPS化されていないサイト(HTTP)では、ログインパスワードやAPIキー、チャット内容が傍受されるリスクがあります。この記事では、無料でSSL/TLS証明...
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環境の構築を進めましょう。


コメント