はじめに
UPKIクライアント証明書を申請、設定します。
証明書を使用するパソコンで作業します。
環境
- Debian bookworm
手順
該当パソコンにログインします。
mkdir -m 700 ~/upki cd ~/upki
証明書を更新する場合は、前回に作成したファイル名を移動します。
mkdir ~/upki/2024 mv rand.dat ~/upki/2024 mv XXXXX.key ~/upki/2024 mv XXXXX.csr ~/upki/2024
ランダムファイルを生成します。
cd ~/upki head -c 1m /dev/urandom > rand.dat
秘密鍵を作成します。
パスフレーズを付加して作成するには「-des3」、または「-aes256」を付加しますが、今回は指定しません。
/usr/bin/openssl genrsa -rand rand.dat 2048 > XXXXX.key
CSR(証明書発行要求書)を作成します。
/usr/bin/openssl req -new -key XXXXX.key -sha256 -out XXXXX.csr
opensslのバージョンによって若干メッセージが異なります。
サーバ名は「XXXXX.com」としています。
最後の方に入力する
・Organizational Unit Name
・Email Address
・A challenge password
・An optional company name
には半角ドット「.」を入力します。
Country Name (2 letter code) [XX]:JP State or Province Name (full name) []:Okinawa Locality Name (eg, city) [Default City]:Nago Organization Name (eg, company) [Default Company Ltd]:CompanyName Organizational Unit Name (eg, section) []:. Common Name (eg, your name or your server's hostname) []:XXXXX.com Email Address []:. Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:. An optional company name []:.
生成したファイルの内容を確認します。
/usr/bin/openssl req -noout -text -in XXXXX.csr
下記URLにアクセスしてTSVファイルを作成します。
「TSVを作成する/既存のTSVを編集する」の「作成開始」をクリックします。
以下の内容を入力して「この内容で作成を開始」をクリックします。
・TSVファイル種別は「新規発行申請用TSV」。
・証明書種別は「サーバ証明書」。
・証明書プロファイルは「サーバ証明書(sha256WithRSAEncryption)」。
・発行方法は空欄。
「作成済みTSVファイル」は、空欄で良いです。
「CSRファイル読込」項目の「ファイル選択」をクリックして、作成したCSRファイルを選択、「読込」をクリックします。
以下の内容を入力して「完了」をクリックします。
「利用管理者氏名」、「利用管理者所属」はローマ字で記述します。
「Webサーバソフトウェア名等:」は使っているWebサーバ(Apache2、Nginxなど)を入力します。
・利用管理者E-mail
・利用管理者氏名
・利用管理者所属
・Webサーバソフトウェア名等
「ダウンロード」をクリックしてTSVファイルをダウンロードします。
該当施設の管理者にメールなどでTSVファイルを送って、手続きを依頼します。
UPKI事務局から「サーバ証明書発行受付通知」のSubjectでメールが届くので、証明書をダウンロードして、サーバに配置します。
証明書の配置
NginxとApache2.4.8以降の場合、SSLCertificateFileは、SSL証明書(csrファイル)と中間証明書(cerファイル)の順に記述したファイル(crtファイル)を作成して指定します。
新規に作成したcer、csr、keyファイルをコピーします。
sudo mkdir /etc/ssl/upki cd /etc/ssl/upki sudo cp ~/upki/XXXXX.cer . sudo cp ~/upki/XXXXX.key . sudo cp ~/upki/XXXXX.csr . su cat XXXXX.csr XXXXX.cer > XXXXX.crt exit sudo chmod 600 XXXXX.*
Apache2の設定
設定ファイルをssl.confとします。
cd /etc/apache2/sites-available sudo a2enmod rewrite sudo a2enmod ssl sudo cp default-ssl.conf ssl.conf sudo vi ssl.conf
ssl.confの修正箇所です。
以下の変数なども適切に設定します。
・ServerAdmin
・DocumentRoot
SSLCertificateFile /etc/ssl/upki/XXXXX.crt SSLCertificateKeyFile /etc/ssl/upki/XXXXX.key
非SSLのサイトをSSLサイトにリダイレクトするようにVirtualHostディレクティブの最後に記述します。
sudo vi normal.conf
下記を追加します。
<VirtualHost *:80> ServerAdmin webmaster@localhost ServerName XXXXX.com DocumentRoot /home/www/html 省略 RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] </VirtualHost>
Apache2を再起動します。
sudo systemctl restart apache2
Nginxの設定
設定ファイルをexpとします。
cd /etc/nginx/sites-available sudo vi exp
ファイルの内容です。
非SSLのサイトをSSLサイトにリダイレクトするように「return 301 https://$host$request_uri;」を記述します。
server { listen 80; server_name XXXXX.com; return 301 https://$host$request_uri; } server { listen 443 ssl; #listen [::]:443 ssl http2 default_server; ssl_certificate /etc/ssl/upki/XXXXX.cer; ssl_certificate_key /etc/ssl/upki/XXXXX.key; ssl_session_cache shared:SSL:1m; ssl_session_timeout 10m; charset utf-8; location / { root /home/www/html; } }
Nginxを再起動します。
sudo systemctl restart nginx
Comments