banner
小鱼

小鱼's Blog

httpsアクセスとNginxプロキシの実装

## VPS で CSR とキーを生成して SSL 証明書を作成する#

ウェブサイトに SSL 証明書を申請する際には、CSR(証明書署名要求ファイル)と呼ばれるものを準備する必要があります。これには、証明書の申請に必要な情報が含まれており、最も重要なのはドメイン名です。https でアクセスするドメイン名を入力する必要があります。例えば、yus.bio の証明書を生成する場合は、次のコマンドを実行する必要があります。

openssl req -new -newkey rsa:2048 -nodes -keyout yus.key -out yus.csr

このコマンドは 2 つのファイルを生成します。yus.key は秘密鍵ファイルであり、SSL 証明書をインストールする際に使用するため、注意して保管してください。プロンプトに従ってドメイン名などの情報を入力し、指示に従って操作を進めると、最終的にこれらの 2 つのファイルが生成されます。

Country Name (2 letter code) [AU]: CN
State or Province Name (full name) [Some-State]: Fujian
Locality Name (eg, city) []: Xiamen
Organization Name (eg, company) [Internet Widgits Pty Ltd]: Cisco
Organizational Unit Name (eg, section) []: IT
Common Name (eg, YOUR name) []: yus.bio
Email Address []: 
Please enter the following 'extra' attributes to be sent with your certificate request

A challenge password []: 
An optional company name []: 

Email Address と A challenge password は空白のままにしておくことができます。ドメイン名以外の情報は、上記の内容に従って入力してください。


image

その後、次のコマンドを実行します。

cat yus.csr

すると、CSR の内容が表示されます。

もう 1 つの.key ファイルは絶対に紛失しないでください。インストール時に必要になります。

## SSL を申請し、証明書を取得する#

name.com でドメインを登録している場合、直接アクティベートできます。

まず、DNS の A レコードを追加する必要があります。


image

次に、SSL の申請画面で、先ほど取得した yus.csr の内容をすべてコピーして、証明書署名要求の入力欄に貼り付けます。次に、次へをクリックします。

すると、以下のような証明書が表示されます。


image

この中の SERVER CERTIFICATE が pem 証明書です。これを VPS サーバーに追加する必要があります。

vi yus.pem

SERVER CERTIFICATE、CA CERTIFICATE、ROOT の内容をコピーして貼り付けます。

最後に、yus.pem と yus.key を /home/cert ディレクトリに配置します。

## Nginx を使用して VPS に証明書をインストールする#

### Nginx のインストール#

ステータスを確認します。

sudo systemctl status nginx

apt を使用してインストールします。

sudo apt-get install nginx -y

起動します。デフォルトのインストールディレクトリは /etc/nginx です。

/etc/init.d/nginx start

Nginx の設定が正しいかどうかをテストします。設定を変更する際にもよく使用されます。

nginx -t

image

Nginx のバージョンを確認します。

nginx -v

Nginx の起動、停止、再起動

service nginx start / stop / restart 

## 設定ファイルの変更#

例えば、8090 ポートでデプロイされている halo アプリケーションを https の 443 ポートにマッピングする必要がある場合、

  • まず、conf.d ディレクトリに移動し、halo.conf ファイルを追加します。内容は次のとおりです。
upstream halo {
  server 127.0.0.1:8090;
}
  • 次に、sites-enabled ディレクトリに移動します。

デフォルトの default ファイルを削除し、halo ファイルを追加します。

vi halo

内容は次のとおりです。

server {
		# httpsのポートは443
		# httpのポートは80
        listen 443 ssl http2;
        listen [::]:443 ssl http2;
        
        # マッピングするドメイン名
		server_name www.yus.bio;

		# pem証明書のパス
        ssl_certificate "/home/cert/yus.pem";
        
        # 生成されたキーのパス
        ssl_certificate_key "/home/cert/yus.key";
        
        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout  5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_prefer_server_ciphers on;


        client_max_body_size 1024m;
        location / {
		        # conf.dディレクトリで作成した.confファイル名
                proxy_pass http://halo;
                proxy_set_header HOST $host;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.

        }

}

保存後、次のコマンドを実行します。

nginx -t

設定にエラーがないか確認します。

### Nginx の起動#

最後に、次のコマンドを実行します。

service nginx restart

ドメイン名でのアクセスが成功することを確認してください。

Bryce's Blog

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。