Help us understand the problem. What is going on with this article?

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

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テキストエディタで開いて、そのまま貼り付ける

以上。

hnkyi
Java / Ruby / Python / C# / 基本情報技術者 / 応用情報技術者 / Kali Linux
lassic
ITを駆使して地方を元気にする株式会社LASSIC(ラシック)。地方を舞台に自分らしく働く優秀な技術者が、貴社のWEB・スマートフォンサイトやアプリ開発、システム開発プロジェクトを成功へと導きます。~鳥取発~ITで地方創生
https://www.lassic.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした