Edited at

証明書差し替えマニュアル

More than 1 year has passed since last update.

一昔前に書いたメモが見つかったので、Qiitaに上げておきます。

当時の事はあまり覚えてないので、ほとんどメモのままですが...


きっかけ

上司「証明書と鍵の交換しといてー、これ使ってね」


  • ****.key

  • ****.crt

  • ****.inca

わい「うぃす(やり方知らんけど、聞くのもあれだし、自分で調べながらやろう)」


手順


1. 何のWebサーバを使っているのか特定する

Webサーバによって、証明書を解釈するアルゴリズムが違うらしい。(Apache、Nginx、Glassfish...)

なので、何のWebサーバを使っているのか特定する必要がある。

ざっくりと説明すると、


  • 証明書を使っているという事はHTTPS通信をしていると

  • HTTPSはポート番号=443

  • LISTEN状態のポート一覧を表示して、ポート番号=443を探し、Program nameを確認する

Linuxの場合、以下のコマンドを叩き、LISTEN状態の一覧を表示する。

以下の場合だと、nginxを使っている事が確認できる。

$ netstat -tanp

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
(・・・・省略・・・・)
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 1113/nginx
(・・・・省略・・・・)


2. 証明書がどこに配置されているか確認する

nginxの場合、デフォルトのインストール先は/etc/nginxであり、基底となる設定はnginx.confとなるため、これを見る。

(インストール先が異なる場合は、そこに移動してください)

$ cd /etc/nginx

$ cat nginx.conf

user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}

ここには証明書に関する設定はないようだ。

設定ファイルの中にinclude /etc/nginx/conf.d/*.conf;と書かれている。

「別の設定ファイルも読み込んでますよ〜」という意味なので、そちらも見てみる。

$ cat conf.d/*.conf

(・・・・省略・・・・)
server {
(・・・・省略・・・・)
ssl on;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_certificate /home/nginx/certificate/********.pem;
ssl_certificate_key /home/nginx/certificate/********.key;
(・・・・省略・・・・)
}
(・・・・省略・・・・)

見つけた。

.pemファイルが、証明書。

.keyファイルが、秘密鍵or公開鍵となる。

なので、ここに証明書が配置されている事が確認できる!!!やったねたえちゃん!!!


3. 証明書の差し替え

さて、場所も分かったので証明書を差し替えよう。

まずは、配置先まで移動。

$ cd /home/nginx/certificate/

思い出した。

上司からもらった証明書と鍵は.key.crt.inca

差し替える対象の証明書と鍵は.key.pem

一致しない.....

どういう事なの..........

調べてみると、こういう事らしい。



  • .crtは証明書


  • .incaは中間証明書

更に調べてみると、.pemはこうやって作るらしい。



  • .pemの空ファイルを作る


  • .crtをテキストエディタで開いて、そのまま貼り付ける

  • 改行をかます


  • .incaテキストエディタで開いて、そのまま貼り付ける

以上。