ブログ

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

    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「タダほど怖い物はないぞ」

    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確認

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

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

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

  • Googleから警告が来たぞ〜

    まあ、AdSenseのコンテンツポリシーを理解していなかったからなんですが。
    警告メールによりますと、「違反の詳細」としては、

    Google では、過度にデリケート、悲劇的なコンテンツを掲載しているサイトの収益化は許可しておりません。これには不幸な事故、自殺、自然災害、わいせつ事件の他、個人、集団、組織を誹謗中傷するコンテンツも含まれます。Google は表現の自由を強く信じ、ウェブ全体にわたって検閲を伴わない幅広いアクセスを提供していますが、こういったコンテンツを含むサイトで表示するコンテンツ ターゲット広告によって、好ましいユーザー エクスペリエンスを提供できるかどうか、独自の裁量に基づき審査、判断する権限を有しています。 
    という事らしい。
    該当するというページを見てみると、確かに「日航機墜落」を題材にした書籍が一覧されていた。
    日航機墜落の事故原因解明に関する書籍を読んでいた時期に作ったページだ。
    とりあえず、長い物には巻かれる人間なので、ページは削除済み。

    詳しくは Google のプログラム ポリシーをご覧ください。

    とあるので、「コンテンツ ガイドライン」を読んでみる。

    サイト運営者様は、コンテンツ ガイドラインに違反するコンテンツを含むページに AdSense コードを配置することはできません。これには、成人向け、暴力的、人種差別的なコンテンツなどが含まれます。

    次のようなコンテンツを掲載するサイトや、そうしたコンテンツへのリンクがあるサイトに Google 広告を表示することはできません。

    ポルノ、アダルト向け、成人向けのコンテンツ
    暴力的なコンテンツ
    人種差別または個人、団体、組織の中傷に関するコンテンツ
    不適切な表現
    ハッキングやクラッキングに関するコンテンツ
    違法な薬物や麻薬関連の器具に関するコンテンツ
    ビールやハードリカーの販売
    タバコやタバコ関連商品の販売
    処方箋医薬品の販売
    武器や弾薬(銃火器、銃火器の部品、刀剣、スタンガンなど)の販売
    ブランド品やその他の商品の偽造品、模倣品の販売
    講義内容や論文の販売や配布
    報酬を提供して、広告や商品のクリック、検索、ウェブサイトの閲覧、メールの購読をユーザーに促すプログラムに関連するコンテンツ
    その他の違法なコンテンツ、不正行為を助長するコンテンツ、他者の法的権利を侵害するコンテンツ

    ん?どれに該当するのだ?
    「児童オンライン プライバシー保護法(COPPA)」の方なのか?
    謎のままだが、まあ、削除したし、あまり深く考えないでおこう。
  • DTIサーバー構築18 「ここと〜、ここに、ご記入お願いします。」

    証明書を認証局に頼んで作ってもらうために、申請用のファイル(CSR)を作ります。
    とりあえず、申請書用のフォルダを作りましょうかね。

    $ sudo mkdir /etc/pki/tls/csr
    $ sudo chmod 700 /etc/pki/tls/csr
    さて、申請書を作ります。

    $ sudo openssl req -new -key /etc/pki/tls/private/domain.pem -out /etc/pki/tls/csr/domain.csr
    Enter pass phrase for /etc/pki/tls/private/neo.sin-cos.com.pem: ←ここで秘密鍵を作るときに利用したパスワードを入力You are about to be asked to enter information that will be incorporated
    into your certificate request.
    What you are about to enter is what is called a Distinguished Name or a DN.
    There are quite a few fields but you can leave some blank
    For some fields there will be a default value,
    If you enter ‘.’, the field will be left blank.
    —–
    Country Name (2 letter code) [XX]:JP
    State or Province Name (full name) []:都道府県
    Locality Name (eg, city) [Default City]:市町村
    Organization Name (eg, company) [Default Company Ltd]:会社名
    Organizational Unit Name (eg, section) []:部署名
    Common Name (eg, your name or your server’s hostname) []:yourdomain.com
    Email Address []:
    Please enter the following ‘extra’ attributes
    to be sent with your certificate request
    A challenge password []:
    An optional company name []:

    ちなみに、CAcertだと、Common Nameしか利用されません。
    さて、生成したファイルを表示して、コピーしたりして使いましょう。

    $ sudo cat /etc/pki/tls/csr/domain.csr