DTIサーバー構築21 「本当にそれでいいのね?」

ということで、予告通りCAcertのルート証明書をインストールしてみる。
ちなみにMacです。Windows?何それ?美味しいの?

まずは、次のページからルート証明書(DER)をダウンロードします。

CAcert's roots
CAcert’s roots

キーチェーンアクセスを起動します。

キーチェーンアクセス
キーチェーンアクセス

メニューの「ファイル」-「読み込む…」で、ダウンロードしたファイルを指定します。
目的のキーチェーンはシステムで、常に信用しましょう。

さて、では、再びCAcertに署名された証明書を利用する我がサイトに接続。

https://sin-cos.com/
すると、ど〜でしょ〜。

この証明書は有効です
この証明書は有効です

先ほどまでは警告が出ていたページが、同じ証明書なのにもかかわらず、
「この証明書は有効です」と、保証されています。

でも、これでは使えない。
StartSSLの証明書を取りましょうか。

Parted Magicは無料だ

ClonezillaはHDDのバックアップにかなり重宝しているが、バックアップしたファイルを見るのには、少しコツがいる。
それはさておき、GPARTED-CLONEZILLA LiveCDという、Clonezillaとパーティションの編集ソフトも入ったLIVE CDがある。

GPARTED-CLONEZILLA LiveCD
http://gpartedclonz.tuxfamily.org/

ん?

あった(過去形)。。。

ということで、代替として、Parted Magicを使ってみようとした。

http://partedmagic.com/
http://partedmagic.com/

が、ここで問題が!

Downloads
Downloads

$4.99!!
え?
でも、Parted Magic is free software.とも書いてある。
ん〜〜〜
よく分からないが、次からダウンロード可能なので、良しとしよう。

http://sourceforge.net/projects/partedmagic/files/
http://sourceforge.net/projects/partedmagic/files/

OSSばんざ〜い!!

DTIサーバー構築20 「文句があるのか、お上のお墨付きじゃ!」

タイトルをふざけすぎて、検索サイトでは上位に上がって来れないよね。

さて、サーバー証明書を手に入れたので、Apacheに組み込んでみます。
SSLの設定ファイルを編集しましょう。

$ sudo vi /etc/httpd/conf.d/ssl.conf
以下の部分を作成した秘密鍵と証明書に変更します。

SSLCertificateFile /etc/pki/tls/certs/domain.pem
SSLCertificateKeyFile /etc/pki/tls/private/domain.pem

Apacheを再起動して、

$ sudo service httpd restart
httpd を停止中:                                            [ OK ]
httpd を起動中: Apache/2.2.15 mod_ssl/2.2.15 (Pass Phrase Dialog)
Some of your private key files are encrypted for security reasons.
In order to read them you have to provide the pass phrases.
Server yourdomain.com:443 (RSA)
Enter pass phrase: ←ここで秘密鍵のパスワードを入力
OK: Pass Phrase Dialog successful.

秘密鍵がパスワードで暗号化されていると、起動時に入力が必要になります。
しかし、これはちょっと実用的ではありません。
なので、パスワードを出力するスクリプトを用意してみます。
場所はどこでもOKです。

$ sudo vi /path/to/passphrase-script

次の内容でファイルを保存します。

#!/bin/sh
echo “password”
ファイルの属性を変更します。

$ sudo chmod 500 /path/to/passphrase-script

先ほどの設定ファイルを再び開いて、

$ sudo vi /etc/httpd/conf.d/ssl.conf

パスワードの取得方法を変更します。

SSLPassPhraseDialog  exec:/path/to/passphrase-script

Apacheを再度再起動すると、

$ sudo service httpd restart
httpd を停止中:                                            [  OK  ]
httpd を起動中:                                            [  OK  ]

パスワードを聞かれることなく起動しました。
ちなみに、秘密鍵の暗号化を解いておくという方法もあります。

$ sudo openssl rsa -in /etc/pki/tls/private/domain.pem -out /etc/pki/tls/private/nopass.pem
Enter pass phrase for /etc/pki/tls/private/domain.pem: ←ここで又もやパスワード入力
writing RSA key

さてと、ブラウザで開いてみましょう。

https://yourdomain.com/
ちなみに、CAcertの証明書を使っています。
そしてブラウザはChrome。

このサイトのセキュリティ証明書は信頼できません
このサイトのセキュリティ証明書は信頼できません

やっぱりダメです。ブラウザに認証用のファイルが含まれていません。
念の為に証明書を見てみますが、きちんとCAcertにて署名されています。

この証明書は不明な機関によって署名されています
この証明書は不明な機関によって署名されています

ということで、CAcertのroot証明書をインストールしてみますか?

AWSの認証対策(SOAP) その後

よし!」っと、言ったものの、次のようなエラーが出ていたことに気づく。

XXXXXXXXXX is not a valid value for ItemId. Please change this value and retry your request.
何ですかね?
ItemIdとなるASINは確かに存在するんだが。。。

答え↓
「          」

いえ、何も書いてません。
答えは、「リクエストを送る場所が違っていた。」です。

AWSECommerceService.wsdl内には、国毎に違うAWSECommerceServicePortが書いてあり、日本のAmazonは「https://webservices.amazon.co.jp/onca/soap?Service=AWSECommerceService」

ということで、次のコードをこの前のコードに追加して事なきを得た。

// 定数定義
 :
define( ‘URL_ENDPOINT’, ‘https://webservices.amazon.co.jp/onca/soap?Service=AWSECommerceService’ ); // EndPoint
 :
$this->client->__setLocation(URL_ENDPOINT);
// 実行
 :
これでしばらく放置できるな。

DTIサーバー構築19「タダほど怖い物はないぞ」

どうしてSSLで接続するのか?
暗号化して、途中経路での盗聴を防ぐため。
通信相手を確認するため。
自分で認証した証明書でも盗聴は防げるが、自分であることの証明はできない。
それに、SSLに使う証明書が公的に証明されていないと、GMailさんに拒否られたりする。
Unable to establish secure SSL connection to mail.yourdomain.com [ Help ]
Server returned error: “SSL error: self signed certificate”
対処法は、、、SSLなしでユーザー認証するしかないのか?

否!

CAsertで、無料でサーバー証明書をゲットだぜ!!
http://www.cacert.org/
とりあえず、上記URLへ行く。

CAcert
CAcert

まずは、コミュニティに参加するために、赤枠部分をクリック!
だがしかし、、、

このサイトのセキュリティ証明書は信頼できません
このサイトのセキュリティ証明書は信頼できません

え?
CAcert自身の証明書がブラウザに登録されてない。
無料とはいえ、いちいち証明書を登録なんか一度もしたことない承認局の承認を受けても、、、

需要があるかどうか分からないけど、続ける。

まずは、入力。

詳細情報
詳細情報

しかし、「 5つの質問と答え」を入力しないといけないとは。

登録後、しばらくすると確認のメールが届くので、URLをクリックして確認。

送信済み
送信済み

ログインして次の作業に進みましょう。

ログイン
ログイン

ログインができたら、サーバ証明書を作っていきましょう。

まずはメニューから「ドメイン」-「追加」を選びます。
ドメインの所有者だという確認を行うために、ドメインを入力します。
ドメイン
ドメイン

ドメイン管理者として有効なメールアドレスを選択してメールを待ちます。

メールアドレス選択
メールアドレス選択
送信済み
送信済み
送られたメールのアドレスをブラウザで開くと選択画面が開きます。
(Google Appsでのメールを利用している場合、postmasterはデフォルトで受信できません。
Verify
Verify
Verifyを選択すると確認完了です。
ドメイン確認完了
ドメイン確認完了
次にメニューから「サーバ証明書」-「新規作成」を選びます。
サーバ証明書 - 新規作成
サーバ証明書 – 新規作成

CAcert 証明書の利用規定(Acceptable Use Policy)を読んで、サーバーで作成したCSRを貼り付けましょう。

CSR(Certificate Signing Request)
CSR(Certificate Signing Request)

送信すると確認画面。

CommonName確認
CommonName確認

確認して送信すると、いきなり証明書が現れます。

サーバ証明書
サーバ証明書

さてと、使いますかね。使えますかね?