はじめに
とあることでUPKIクライアント証明書を申請することになったのでメモ。
証明書を使用するパソコンで作業します。
環境
- Debian bookworm
手順
該当パソコンにログインします。
mkdir -m 700 upki cd upki/
証明書を更新する場合は、前回に作成したファイル名を変更しておく。
mv rand.dat rand.dat-20240226 mv XXXXX.key XXXXX.key-20240226 mv XXXXX.csr XXXXX.csr-20240226
ランダムファイルを生成します。
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のバージョンによって若干メッセージが異なる。
最後の方に入力する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.jp Email Address []:. Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:. An optional company name []:.
生成したファイルの内容を確認し、XXXXX.csrファイルを何らかの手段でダウンロードします。
/usr/bin/openssl req -noout -text -in XXXXX.csr
証明書の更新は、該当パソコンにログインして、シリアルナンバーの確認が必要。
前回の登録時に届いたメールに記載されているシリアルナンバーと一致するか確認します。
openssl s_client -connect XXXXX.jp:443 </dev/null 2> /dev/null | openssl x509 -noout -serial
下記URLにアクセスしてTSVファイルを作成します。
「TSVを作成する/既存のTSVを編集する」の「作成する」をクリックします。
以下の内容を入力して「この内容で作成を開始」をクリックします。
・TSVファイル種別は「新規発行申請用TSV」。(更新の場合は「更新申請用TSV」)
・証明書種別は「サーバ証明書」。
・証明書プロファイルは「サーバ証明書(sha256WithRSAEncryption)」。
・発行方法は空欄。
「CSRファイル読込」項目の「ファイル選択」をクリックして、作成したCSRファイルを選択、「読込」をクリックします。
以下の内容を入力して「完了」、「ダウンロード」でTSVファイルをダウンロードします。
氏名と所属はローマ字で記述します。
・失効対象証明書シリアル番号: (更新の場合は、確認したシリアルナンバーを入力します。)
・利用管理者E-mail:
・利用管理者氏名:
・利用管理者所属:
・Webサーバソフトウェア名等: // 例: Apache2、Nginxなど
該当施設の管理者にTSVファイルを送って手続きを依頼します。
UPKI事務局から「サーバ証明書発行受付通知」のSubjectでメールが届くので、証明書をダウンロードしてサーバに設定します。
証明書の配置
NginxとApache2.4.8以降の場合、SSLCertificateFileは、SSL証明書(csrファイル)と中間証明書(cerファイル)の順に記述したファイル(crtファイル)を作成して指定します。
sudo mkdir /etc/ssl/upki cd /etc/ssl/upki sudo cp ~/upki/XXXXX.jp.cer . sudo cp ~/upki/XXXXX.key . sudo cp ~/upki/XXXXX.csr . su cat XXXXX.csr XXXXX.jp.cer > XXXXX.crt exit sudo chmod 600 XXXXX.*
Apache2の場合
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.jp 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の場合
Apache2と異なり、1個のファイルで設定します。
設定ファイルをexpとします。
cd /etc/nginx/sites-available sudo vi exp
ファイルの内容です。
非SSLのサイトをSSLサイトにリダイレクトするように「return 301 https://$host$request_uri;」を記述します。
server { listen 80; server_name XXXXX.jp; 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