FC2ブログ

■シェル不可のレンタルサーバにwin-acmeを使用してLet's EncryptのSSL証明書を取得する方法

自分の使用しているレンタルサーバは、シェルも使用できなく、Let's Encryptに対応していないので、Let's EncryptのSSL証明書を取得するには、別のPCなどで証明書を取得しなければならなかった。

ネットで検索したけど、自分の行ったやり方でやっている人がいなかったので記事にしておく。

Let's Encryptの証明書を取得するには、通常は証明書を取得するサーバ上で専用のコマンド(Cerbot)で行うのだけど、自分のPC(Windows)でCerbotと同じ様な事ができるソフトが必要で、それがwin-acmeというソフト。

win-acmeは、以下のサイトからダウンロードする。
https://pkisharp.github.io/win-acme/

ダウンロードしたzipファイルを解凍すると、wacs.exeという実行ファイルがあるのでこれを実行する。

実行する際に管理者として実行すると使えるオプションが増えるけど、自分の行う方法では必要なかった。

実行すると、以下のようなメニューが出力される(以後「-----」で囲んだ部分はwin-acmeが出力するメッセージ)。

-----
 N: Create new certificate (simple for IIS)
 M: Create new certificate (full options)
 L: List scheduled renewals
 R: Renew scheduled
 S: Renew specific
 A: Renew *all*
 O: More options...
 Q: Quit

 Please choose from the menu: 
-----

ここは手動で行うので「M」を入力する。

-----
 1: Manual input
 2: CSR created by another program
 C: Abort

 How shall we determine the domain(s) to include in the certificate?: 
-----

ここも手動で入力するので「1」を入力する。

-----
 Enter comma-separated list of host names, starting with the common name: 
-----

登録するホスト名を訊かれるので入力する。
1つのホストで複数の名前を使用している場合は感まで区切って複数入力する。

自分の場合は、ドメイン名のみと「www」の両方でWebの表示ができるので、「example.com,www.example.com」の様な感じで入力した(example.comは自分のドメインに書き換える)。

ワイルドカードの証明書の場合は「*.example.com」と入力すればよいが、DNSの設定変更でしか取得できなくなるのでここでは触れない。

-----
Suggested FriendlyName is '[Manual] example.com', press enter to accept or type an alternative: <Enter>
-----

登録名みたいなものだと思われる。

同じドメイン名で複数のサーバを登録する大規模なシステムの場合は重複することもあるので、その際は区別できるように変更すればいいと思う。

自分の場合は特に変更する必要がないので、そのままEnterキーを押した。
その場合は、ここでは「example.com」となる。

何度か失敗しているので、表示メッセージを保存していなかったけど、この後にメールアドレスを訊かれたと思う(タイミングが違うかもしれないが初回はメールアドレスを訊かれる場面がある)。

証明書の期限が近づくとメッセージを送ってくれるらしい(まだ取得して間もないので届いてないので確証はない)ので、有効なメールアドレスを入力する。

-----
 1: [http-01] Save verification files on (network) path
 2: [http-01] Serve verification files from memory (recommended)
 3: [http-01] Upload verification files via FTP(S)
 4: [http-01] Upload verification files via SSH-FTP
 5: [http-01] Upload verification files via WebDav
 6: [dns-01] Create verification records manually (auto-renew not possible)
 7: [dns-01] Create verification records with acme-dns (https://github.com/joohoi/acme-dns)
 8: [dns-01] Create verification records with your own script
 9: [tls-alpn-01] Answer TLS verification request from win-acme
 C: Abort

 How would you like prove ownership for the domain(s) in the certificate?: 
-----

どのようにして、証明書を発行するサーバの所有者であるかを証明するための手段を選ぶ。
自分はFTPで認証を行う「3」を選択した。

-----
 Enter an ftp path that leads to the web root of the host for http authentication
  Example, ftp://domain.com:21/site/wwwroot/
  Example, ftps://domain.com:990/site/wwwroot/: 
-----

FTPのパスを入力する。

-----
 Copy default web.config before validation? (y/n*)  - 

 Username: 

 Password: 
-----

「Copy default ...」はよくわからなかったので「n」にした。
(「y」で構わないと説明しているサイトも有るのでお好みでw)

その後FTPのユーザ名とパスワードを入力する。

-----
 1: Elliptic Curve key
 2: RSA key

 What kind of private key should be used for the certificate?: 
-----

ここは「2」を選択した。

-----
 1: IIS Central Certificate Store (.pfx per domain)
 2: PEM encoded files (Apache, nginx, etc.)
 3: Windows Certificate Store
 C: Abort

 How would you like to store the certificate?: 
-----

自分のサーバーはLinuxなので「2」を選択した。

-----
 Path to folder where .pem files are stored: 
-----

証明書を保存するパス(自分のPCに保存するパス)を指定する。

-----
 1: IIS Central Certificate Store (.pfx per domain)
 2: Windows Certificate Store
 3: No additional storage steps required
 C: Abort

 Would you like to store it in another way too?: 
-----

自分のサーバーはLinuxなので「3」を選択

-----
  With the certificate saved to the store(s) of your choice, you may choose one
  or more steps to update your applications, e.g. to configure the new
  thumbprint, or to update bindings.

 1: Create or update https bindings in IIS
 2: Create or update ftps bindings in IIS
 3: Start external script or program
 4: Do not run any (extra) installation steps

 Which installation step should run first?: 
-----

自分のPCにインストールはしないので「4」を選択した。
この後、入力した情報でサーバーにFTP接続を行い、成功すると指定した場所に証明書が保存される。

-----
Do you want to specify the user the task will run as? (y/n*)
-----

n」で問題ありません。
y」にするとタスクマネージャにタスクが登録されるかも。

実際は、接続ログなどのメッセージも表示されますが省略しています。


証明書は、指定した場所に
・「登録名」-chain.pem(中間証明書、クロスルート設定用証明書)
・「登録名」-crt.pem  (サーバ証明書)
・「登録名」-key.pem  (秘密鍵)
として保存される。


「登録名」-chain.pemは、1番目の「-----BEGIN CERTIFICATE-----」~「-----END CERTIFICATE-----」が中間証明書で、2番目の「-----BEGIN CERTIFICATE-----」~「-----END CERTIFICATE-----」がクロスルート設定用証明書となっている。

上記のファイルを各レンタルサーバの指定された方法で登録する。
ファイル自体はテキストファイルで、自分の使用するレンタルサーバの場合は、Webのフォームから登録すると翌営業日にインストールされる様になっていた。

以上の手順で、シェルの使用できないレンタルサーバにwin-acmeを使用してLet's EncryptのSSL証明書を取得、登録することができ、SSLでのアクセスが可能になった。

Let's Encryptの証明書の有効期限は3ヶ月あり、証明書を取得したばかりなので更新はしていないので、更新の仕方は必要になった時に調べる予定。

更新の仕方は多分検索すれば見つかると思うので、自分で探してください。

最悪見つからなくても、同じ手順で証明書を取得すれば良いような気がするw

誰かの参考になればいいかな~
スポンサーサイト



タグ : WEB

■コメント

■コメントの投稿

管理者にだけ表示を許可する

 

カレンダー

01 ≪│2020/02│≫ 03
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29

プロフィール

ひ~た

Author:ひ~た
しがないサラリーマン
趣味でDTMとかやっています
詳しいことはwww.hi-ta.com
Twitterのつぶやきはこちらhttps://twitter.com/Hi_Ta

カウンター

検索フォーム

amazonアソシエイト














 Amazon.co.jpアソシエイト

Twitter

RSSリンクの表示

最新記事のRSS

QRコード

QR