WEB

AWS x SNI SSL の上限

ラストスパートって感じの今。

2週間もの出張で、まとまった時間がとれないので、結局作業は進まず。
あまり、長期の出張をすべきではないですね。
隙間時間が有るぐらいなら、出張は詰めたほうが、効率的だと思いました。

***

さて、今、30個のドメインを運用しようとしています。AWSで

で、11個目のSNI SSLを取得しようとすると、

AWS SNI SSL 上限 / Something went wrong Cannot request more certificates in this account. Contact Customer Service for details

という、警告が・・・

サポートに連絡して、30にまで上げてもらおうと思ったら、

I’m really sorry, I am unable to process the limit increase you requested for CloudFront Distributions Custom SSL Certificate at this time.
I was able to partially fulfill your limit increase request and your new limit is 10.
We can gladly reassess this limit at a later stage, as your previous limit was only 2, this should greatly help to have the limit to 10.

要約すると、すまないが、CloudFront Distributions Custom SSL Certificateの制限を解除することが出来ないんだよ。以前は、2つが上限で、今は10個になったんだから、許しておくれよ。

という、感じ。

AWSの担当に、CloudFrontで、SNI SSLを30個運用したいと、告げたら、
特に、制限がありそうなことは、言っておらず、今更ながら、困っています!!

新しくアカウントを取るなんてことは出来ないし・・・

***

上限10個といってはいるが、実際に登録しているドメイン数は、11

“Additional names”というのがあって、偶然使ったため、
試しに、1つ消して、Additional namesを使って、6つ追加してみたら、

AWS SNI SSL Additional names

成功!!!

これまで、単品で取得したところは、削除して、まとめて登録する必要があるな・・・

このためには、一度、

  1. Route53からサブドメインを削除し、
  2. Cloudfrontを停止後、削除し、
  3. SNI SSL をまとめて、登録し、認証を済ませた後、
  4. 再び、Cloudfrontの登録をし、
  5. Route53で、サブドメインを作る段取りとなる・・・

めんどくちぇー(*´Д`)

1つ1つ、追加出来ないのが、残酷過ぎるOrz
しかも、上限解放も、受け付けてくれないなんて・・・

ひとまず、泣きそうだった状況も、回避できたので、よしとするが、

来年は、改善されていることを、期待しよう!!


 

で、気になる表記ですが、

AWS SNI 表記

ちゃんと、緑のロックがかかっています。

詳細を見ても、安全は証明されているものの、

AWS SNI SSL Cloudfront

発行先は、1行目に入れたドメインとなっています。

AWS SNI SSL Additional Names

※サイトは、.net / 発行先は、.biz

さて、これで安全といえるのか?、不安はあるものの、
鍵がついているので、大丈夫だろうという判断。

もちろん、iPhone / Android Chromeでも、緑の鍵マーク状態で、
しっかり、暗号化されているのは、間違いなさそう。

一応、他のブラウザーも調べてみました。

AWS SNI SSL @ EDGE
AWS SNI SSL / EDGE
AWS SNI SSL / IE10
AWS SNI SSL / IE10
AWS SNI SSL / Firefox49
AWS SNI SSL / Firefox49

いずれも、発行元は、1行目のドメインでしたが、
すべて、証明され、暗号化されているということなので、
良しとすることにします。

-

AWS x Eccube2.13. x メール遅延 (PHP5.6系の罠)

Eccubeから注文などのメールが、約10分遅延する問題があり、
まだ、ピークではないので、やり過ごしていたが、

ここ1ヶ月ほど悩んだことが、やっと解決された!!

***

原因は、PHP 5.6 / PEAR::SMTPにあり!

5.6から、587ポートに接続のTLSは、認証が必要になっています。

function enableCrypto($enabled, $type){
  if (version_compare(phpversion(), "5.1.0", ">=")) {
    if (!is_resource($this->fp)) {
      return $this->raiseError('not connected');
    }
    // ▼ この行を追加
    stream_context_set_option($this->fp, 'ssl', 'verify_peer_name', false);

    return @stream_socket_enable_crypto($this->fp, $enabled, $type);// 問題の場所
  } else {
    $msg = 'Net_Socket::enableCrypto() requires php version >= 5.1.0';
    return $this->raiseError($msg);
  }
}

PHP5.6でSMTP送れない件 – ド忘れ防止雑記帳より

前バージョンのPEAR::SMTPにはついていたコードなんでしょうか?
7行目のコードを足せば、動くようになります!


AWS SES の設定や制限解放

SESの設定は、こちら。

あとは、制限解放依頼。

Amazon SES rejected

初期は、サンドボックスになっているので、登録したメアドにしか、
メールが送れないので、その制限を解除↓

解除リクエスト先 >?http://aws.amazon.com/ses/extendedaccessrequest/

参考 >?Amazon SESの送信制限を解除する(SandBoxの外へ移動する)

※スパムメール送る送信元としてSESが利用されていることが、多いらしいので、サイトがある程度完成してから、申請しました。

AWS SES 送信テストサンプルコード

PHP で Amazon SES の SMTP インターフェイスから E メールを送信する

の通り、USER / PASSWORDを指定するだけなんですが、
PEARが入ってないと、当然動きません。

※USER / PASSWORD は、SESのメール設定時にIAMで取得する乱数文字
※HOSTは、今回オレゴンを使ったので、

define('HOST', 'email-smtp.us-west-2.amazonaws.com');

また、AWS(Amazon AMI)の場合、

include_path = .:/usr/share/pear:/usr/share/php

となっているので、インストールするか、
ECCUBE内にもある(data/module)ので、これを追加してやる。

この場合、ECCUBE のルートにあるdefine.phpで書かれているとおり、

/** data/module 以下の PEAR ライブラリを優先的に使用する */
set_include_path(realpath(dirname(__FILE__) . '/' . HTML2DATA_DIR . 'module') . PATH_SEPARATOR . get_include_path());

をECCUBE固有の固定値を修正し、
サンプルコードの上の方に書き足せば、動きます。
(直接、module/Mail.phpをincludeしようとしたりして、罠にハマったのでw)

ECCUBE 2.13系?MAIL_BACKEND >> SMTP

 define('MAIL_BACKEND', 'mail');

config.phpのこの行を、mail >> smtpに変え、host / port / user / passwordを適切に変えるだけ。
「ECCUBE SMTP」で検索すると、module / Mail / smtp.phpも書き直せ
と出てきますが、そんな必要はありません。!

古いバージョンでは、書き直しが必要だったかもしれませんが、
config.phpの変更だけで、おk。

呼び出し元(module/mail.php)のソースを読む限り、

Mail->factory('smtp', $param)

このコードで、上記configで指定されたsmtpの値
=$paramが渡され、引き継がれています。


また、まとまってない文章っぽいですが、お察しくださいw

実際に注文してみたところ、全く遅延はありませんでした!
MAIL_BACKENDのmail / PHP のメールは、規制がかかっているので、
SES取得、制限開放して、

MAIL_BACKEND = SMTPで運用すると、幸せになれます!

関連

-