ああコンフィグレーション
サーバ

■SSL 備忘録

これは、備忘録ですのであしからず。SSLはSecure Socket Layer

作成は(多分更新も同じ)

openssl req -new -newkey rsa:2048 -nodes -keyout xxxxxxxx.jp.2023.key -out xxxxxxxx.jp.2023.csr

-des3とかすると、最後にパスフレーズを求められてしまうので、Apache2等サーバの自動restaertとかできなくなってしまう。(チャレンジパスワードとは違う。2種類ある)

csrはCorporate Social Responsibility
公開鍵+サイト情報等なので、公開鍵部分は、素数の積とeが書かれている。クライアントは、エンコードするとき、対象文字等対象をe乗して、素数の積で割った余りを使っていく。
認証局に送る必要があるファイル。

上記keyファイルは秘密鍵。大きな2つの素数をかけ合わせたもの。16進表記らしい。それと、フェルマーの少定理にもとづく(1つ目素数−1と2つ目素数-1 と互いに素となる数)RSA暗号 e (指数表記なのかな? ちょいうとわからん)。
素因数分解がとんでもなく大変だから、できないというものだったよね。プログラム組んでも、結局1~nまで総当りで、割って、結果2つの割れた数が答えだったら素数だ というものでも作るしか無いから、数が大きくなっていくと、いつまでたってもプログラムから答え返ってこないよな。全世界のPCに分散処理でもかけないと、無理か。それでも何年かかるやら。

どこで作成しても良いと思うけど、上記コマンドを使うと、パーミッションはそれなりに設定される。keyファイルは、rootが読めるだけになるが、csrは、全部rがつく。
コピーしてそれなりの場所に移動する場合は、必ずパーミッションの確認を。

VPSは

VPSは必要だろうか。このサイトはVPSでは無いが。 仕事のサイトは長年VPSでやってきた。サイトで固有のアプリケーション動作とかの作り物を入れる必要があるかもしれないと思ってVPSを選択して来たが、厄介なSSLの更新とか、セキュリティーの更新とか、ちょっと忘れると大変なことになる。

今まで、過去2度VPSを乗っ取られた経験がある。重要なサイトではなかったので、私の損害はほとんどなかったが、踏み台にされて、不正めーるやら不正アクセスの踏み台にされた事がある。 理由はほっといたため。 パスワードが破られて入られた。 パスワードは使ったらだめなんだよね。 これもRSAにしないとね。

今どきの共用サーバは、ひところと違って、そんなに遅くないし、PHPだって制限はあるものの、ほとんど動作するからね。SSLの更新も楽ちんだろうし。

Apache2の場合、置き場所は

Linuxの場合だが、apacheのコンフィグレーションのディレクトリに、一目瞭然のファイルがあると思うので、これを参考にする。
人によっては、デフォの443ファイルを利用している人や、専用に作っている人など様々だと思うが、私の場合httpsにしたいサイトのコンフィグレーションは、大雑把に以下のようにしてあるだけなので、SSLEngine on以下を修正するだけで良い。
今までは、サイトの乗り換えや、安いものに乗り換えたりで、その都度新規。更新した事はない。
 後半はmysqladminの防御部分なので、無視してください。

<VirtualHost 999.999.999.999:443>
    DocumentRoot /***/www/xxxxxxxx.jp
    ServerName xxxxxxxx.jp

    SSLEngine on
    SSLCertificateChainFile /etc/apache2/***/**/ssl.crt/dvcacert.cer
    SSLCertificateFile /etc/apache2/***/**/ssl.crt/ssl.globalsign.com.crt
    SSLCertificateKeyFile /etc/apache2/***/**/ssl.key/ssl.globalsign.com.key

    <Directory “/***/www/xxxxxxxx.jp">
	AllowOverride All
	allow from all
	RedirectPermanent /myadmin/ "https://xxxxxxxx.jp"
	RedirectPermanent /mysql-admin/ "https://xxxxxxxx.jp"
	RedirectPermanent /mysql/ "https://xxxxxxxx.jp"
	RedirectPermanent /mysqladmin/ "https://xxxxxxxx.jp"
	RedirectPermanent /PMA/ "https://xxxxxxxx.jp"
	RedirectPermanent /admin/ "https://xxxxxxxx.jp"
	RedirectPermanent /php-my-admin/ "https://xxxxxxxx.jp"
	RedirectPermanent /php-myadmin/ "https://xxxxxxxx.jp"
	RedirectPermanent /phpmyadmin/ "https://xxxxxxxx.jp"
    </Directory>
</VirtualHost>

GrobalSineの場合
・発行された「証明書」の中身をコピーして、/***/globalsign_crt.pemにコピー
・発行された「中間証明書」の中身をコピーして/***/dvcacert.cerにコピー

例えば
SSLCACertificateFile /usr/local/apache/conf/dvcacert.cer
SSLCertificateFile /usr/local/apache/conf/globalsign_crt.pem
SSLCertificateKeyFile /usr/local/apache/conf/globalsign_key.pem

apache2 248以降は、ファイル2種類を重ねて登録なので、発行されるデータも違うので注意。PKCS7など。(apache2 var248以降 SSLCertificateChainFileディレクティブはない

Conohaサーバー

のvpsの場合、以前クイック認証SSLを使っていて、更新しようと思ったけど、やはり、無料のアルファSSLにしたい。なんていうことも可能。

conohaコントロールパネル セキュリティー SSLで、前のデータはそのままで、新規にアルファSSLを淡々と作ります。勿論一番上の作成コマンドも用いて。認証もDNS認証でOK。TXTフォールドが2つあってもOK。

作成できたら、証明書と中間証明書をダウンロードして、中身コピーしてそれぞれのファイル作成後、その場所をapacheの設定ファイルの必要な場所を置き換えれば良いです。

ただ、上にも書きましたが、Apacheバージョンによっては、ディレクティブも、ダウンロードファイルも違うので、注意。
apache 2.4では中間CA証明書を指定する SSLCertificateChainFile は無い。

失効ボタンをクリックしたが、気が変わった

これは、このConohaに限った事では無いでしょうが、いろいろ不具合が起こると思います。状況によっては、無料なのか、様々考慮して有料にするとかの中で・・・

  • 再認証をしたが、謎のエラーが出て次に進めない。
  • 新しく鍵を作り直し、新しいCSRで再認証しても、エラーになる。

こんな事になったら、素直にサポートに電話しましょう。どんなに足掻いてもどうにもなりません。(私の場合、3時間ほどで、古いものを削除してもらえました。→の先は新規登録からやり直す必要あるのですが)

  • ドメインリストの中の該当ドメイン→古いTXTフィールドのドメイン認証は、削除しておきましょう。

再起動に失敗

まずは、logを確認。 /var/log/apache2/error.log

AH02565: Certificate and private key xxxxxxxx.jp:443:0 from /etc/apache2/*****/dvcacert.cer and
/etc/apache2/***/xxxxxxxx.jp.key do not match

とかなっていたら、多分ファイルを取り違えているので、証明書と中間証明書の取り違えを疑ってみてください。

秘密鍵の内容を確認

# openssl rsa -text -noout -in [秘密鍵]

CSRの内容を確認

# openssl req -text -noout -in [CSR]

証明書の内容を確認

# openssl x509 -text -noout -in [証明書]

それにしても

作成から、認証局に送るやら、sshも含めて、簡単ではないし、めんどくさいし、厄介ですよね。もっと楽ちんにならないのでしょうか。一年更新でも、去年どんな作業したか忘れます。
 そうすると、サイト運営者難しいところを代行してくれる共用サーバが候補になるのです。
 本文途中でも、VPSがどうしても必要なのか、自分に問たりしています。 皆さんはこの面倒な作業どうしていますか?
 実際、自分管理のサイトは、ユーザ管理があったり、秘密系のものがあったりするわけでは無いので、httpsである必要は全く無いのですが、今どきブラウザがそのようにはしてくれませんので、sslを設置せざるをえません。