カテゴリー
Windows

リモート・デスクトップ・サービス

The same article in English

 多分,同じことで困っている人がいると思うが, 10 月の MS の魔の更新後,サーバ (OS は Windows7 Home Premium x86) へのリモート・デスクトップができなくなった。実のところ,これに気づくまでは,「魔の更新」とは思っていなかったんだが (-_-;)。 Windows7 Home Premium へのリモート・デスクトップです。お分かりですよね。こんなのやこんなの (http://stascorp.com/load/1-1-0-63 くりくりさんからの情報で調べてみたら,リンク先によからぬものが含まれていそうなので,リンクを外しました。跳び先で,うっかりアチコチクリックしなければ,大丈夫だと,思うんですけどね。まあ,転ばぬ先の杖で,リンクは切っておきます。興味がある場合は,自己責任で行ってください。)をめっけたので,いろいろやってみたが,ギブアップ。ハァー。

 めったに使わないとはいえ,サーバへのリモートができないのは,困る。仕方がないから Chrome Remote Desktop で代替することにした。サーバ自身に必要のないソフトのインストールは好きでないが,今回は,やむを得ないかなぁ。

カテゴリー
Windows

OpenSSL で作る SANs 対応かつ SHA256 使用の自前認証局。

The same article in English
投稿アップデート情報  追記(10/28)

 今回の騒ぎ“Qualys SSL Labs – Projects / SSL Server Test” をやったとき,テスト結果にやらオレンジやらが乱舞していた (^_^;)。
 
||赤いの||

  1. Trusted : No NOT TRUSTED <<---- これは,自前認証局を使っているせいなので,自信をもって無視する(笑)。
  2. IE 6 / XP No FS 1 No SNI 2 : Protocol or cipher suite mismatch : Fail3 <<---- うちの SSL サーバのユーザは私だけで,私は IE 6 / XP なんぞ使わないので,これも無視。
  3. Fail3 “Only first connection attempt simulated. Browsers tend to retry with a lower protocol version.” なんだそうだ。うちの SSL サーバはより低レベルのプロトコルは受けつけないが,これも別に問題なし。
  4.  というわけで,赤いのについては何もやらなくてよし。

||オレンジの||

  1. Prefix handling : Not valid for “www.o6asan.com” :CONFUSING
  2. Signature algorithm : SHA1withRSA : WEAK
  3. Chain issues : Contains anchor <<---- Ivan Ristić“Chain issues Contains anchor” で書いていたことを根拠に,無視。
  4. Not in trust store <<---- これも自前認証局のせいなので,無視。
  5. Downgrade attack prevention : No, TLS_FALLBACK_SCSV not supported
  6. Forward Secrecy : With some browsers

 オレンジのについては, 1, 2, 5, 6 について対処する必要がありそうだ。まずは, 5 と 6 から。 1 と 2 は証明書そのものを作り変えないといけないので,後回し。

  1. Apache 2.4.10 (httpd-2.4.10-win32-VC11.zip) を 10/20 バージョンにアップデートした。この版は openssl-1.0.1j を使ってビルドされてて,1.0.1j は TLS_FALLBACK_SCSV をサポートしたから。
  2. httpd-ssl.conf において, SSLHonorCipherOrder on をアンコメントし, SSLCipherSuite Directive の値を変更。
    HIGH:MEDIUM:!aNULL:!MD5

    EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384
    EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256
    EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP
    !PSK !SRP !DSS

       参考 : Configuring Apache, Nginx, and OpenSSL for Forward Secrecy
    ↓ RC4 関連で, 12/23 に下記に変更した。
    EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384
    EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH
    EDH+aRSA !RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS"

       Ref : RC4 in TLS is Broken: Now What?

    SSL サーバがモバイルや旧世代の OS/browser をサポートしなくてはいけない場合は,それらに合わせた設定もする必要が生じる。うちのは,関係ないけど。
  3. この作業後,テストしたら, “Downgrade attack prevention : Yes, TLS_FALLBACK_SCSV supported”“Forward Secrecy : Yes (with most browsers) ROBUST” に変わった。

 次は, 1 と 2。
 1 は自前認証局の Common Name が o6asan.com だけだからだ。で,新しいのは, o6asan.com も www.o6asan.com もサポートさせないといけない。しかし,我が家の SSL サーバ用の IP は,一つしか割り当てる気がないよという問題がある。これに対処するために, SNI(Server Name Indication) を使う。 8 月ごろに,くりくりさんが取り組まれていた。まあ,まだすべての OS/browser がサポート完了しているわけではないが……それでも,かなりましになってきたのは確か。ワイルドカード証明書か SAN かということになるが, SANs で行くことにした。だって,うちの SSL サーバに任意のサブドメインを受け入れさせる必要はないでしょ。これについては Apache からも制限できるとはいえ,必要のない扉を大きく開けるのはポリシーに反する。
 2 は前の証明書を作ったときに OpenSSL の default を使ったからである。デフォルトだと,今もかわらず SHA1 を使うようになっている。今回は, default_md = sha256 にして,こさえるワ。
 28 日,改めて Server Name Indication を読み込んでいたのだが, SNI と ワイルドカード証明書か SAN は次元の違う話のようだ。難しいなぁ。

 openssl.cnf (← この標準の名称のままで行く) を Apche24conf から c:openssl-1.0.1x-winxxssl (← OpenSSL をフルでインストールすると,ここがデフォルト) にコピーして,以下のようにカスタマイズする。

    一行アンコメントし,いくつか値を変更する。

  1. dir = ./demoCA —->> dir = X:/demoCA <<----絶対パス
  2. default_crl_days = 30 —->> default_crl_days = 365
  3. default_md = default —->> default_md = sha256
  4. default_bits = 1024 —->> default_bits = 2048
  5. # req_extensions = v3_req —->> req_extensions = v3_req
    何行か追加する。
  1. [ v3_req ] のエリアに subjectAltName = @alt_names を追加。
  2. [ v3_ca ] エリアの直前に以下を追加。
    [ alt_names ]
    DNS.1 = example.com
    DNS.2 = www.example.com

     
    必要なドメインを DNS.1, DNS.2, DNS.3, … のように追加できる。
  3. クライアント証明書も必要な場合は, openssl.cnf の最後に以下を追加する
    [ ssl_client ]
    basicConstraints = CA:FALSE
    nsCertType = client
    keyUsage = digitalSignature, keyEncipherment
    extendedKeyUsage = clientAuth
    nsComment = "OpenSSL Certificate for SSL Client"

 さて,新自前認証局の作成をしよう。(参考 : 本家のお世話-#68)

    ||自前 CA 作成||

  1. X:/ に myCA フォルダを作る。
  2. private と newcerts という 2 つのフォルダと index.txt を myCA に作る。
  3. cmd.exe を 管理者として実行。
    pushd X:myCA
    echo 01 > serial
    openssl req -new -keyout privatecakey.pem -out careq.pem
    openssl ca -selfsign -in careq.pem -extensions v3_ca -out cacert.pem
    copy cacert.pem (Drive_SV):Apache24confssl.crt
    copy cacert.pem my_ca.crt

      注)(Drive_SV) というのは,自宅サーバ上のサーバウェア用パーティションである。

    ||Server 証明書作成||

  1. pushd X:myCA
    openssl genrsa -out server.key 2048
    openssl req -new -out server.csr -key server.key
  2. 次のコマンドで CSR 内の SANs を確認する。(中にちゃんと ‘Subject Alternative Name’ があるかな?)
    openssl req -text -noout -in server.csr
  3. openssl ca -in server.csr -out server.crt -extensions v3_req
    copy server.key cp_server.key
    openssl rsa <cp_server.key> server.key
    copy server.key (Drive_SV):Apache24conf
    copy server.crt (Drive_SV):Apache24conf
    ||Client 証明書作成||

  1. pushd X:myCA
    openssl req -new -keyout client.key -out client.csr
    openssl ca -policy policy_anything -extensions ssl_client -in client.csr -out client.crt
    openssl pkcs12 -export -in client.crt -inkey client.key -out clientcert.p12

   SANs 作成参考リンク : FAQ/subjectAltName (SAN), Multiple Names on One Certificate.

 やっと,「 SANs 対応かつ SHA256 使用の自前認証局」が出来た。満足じゃ!!

カテゴリー
Windows

覚え書-#20。

The same article in English
投稿アップデート情報  追記(10/18)

 もう, “POODLE” 問題(つまり, CVE-2014-3566)には,対処した? OpenSSL のオフィシャルでも, OpenSSL Security Advisory [15 Oct 2014] が出てる。

 サーバ管理者としては下記のことをやった。
 今のところ, 1.0.1j でビルドされた Apache Lounge 版の Zip が手に入らないので, “SSL v3 goes to the dogs – POODLE kills off protocol” にあった回避策をやった。

 httpd-ssl.conf に SSLProtocol All -SSLv3 を書き加えて, httpd.exe をリスタートした。やる前は, SSL Server Test で “This server is vulnerable to the POODLE attack. If possible, disable SSL 3 to mitigate. Grade capped to C” だったが,回避策後は, “This server is not vulnerable to the POODLE attack because it doesn’t support SSL 3” になった。実のところ,うちでは, Apache 2.4 と OpenSSL 1.0.1 を使っているので,うちの mod_ssl の場合, ‘SSLProtocol all’ は ‘SSLProtocol +SSLv3 +TLSv1 +TLSv1.1 +TLSv1.2’ ということになる。これは SSLProtocol Directive に記述がある。

 ユーザとしては,ブラウザで SSLv3 を停めた。
 やり方は,これも How to protect your browser にあった。英文だが,図もあってわかりやすい。日本語のサイトでは, IE, FireFox, Chrome の 3 つともの説明があるところを見つけられなかった。

追記(10/18):
 PHP 5.6.1 —>> PHP 5.6.2 ChangeLog.
 phpMyAdmin 4.2.9.1 —>> phpMyAdmin 4.2.10 ChangeLog.

カテゴリー
Windows

Windows で使える jpegtran 用上書き bat ファイル。

The same article in English
投稿アップデート情報  追記(2016/10/29)

 ご存知, jpegtran , UNIX/LINUX 系ではどうか知らないが, Windows で使うとすごーく不便。元フォルダに上書きしてくれる bat ファイルを,自分用に作ってみた。
@echo off
setlocal enabledelayedexpansion
pushd %~dp0
for %%a in (%*) do (
set OutFile=%%~na%%~xa
jpegtran -copy none -optimize -outfile !OutFile! %%a
for %%b in (!OutFile!) do set fileSize=%%~zb
if !fileSize! LSS %%~za (copy !OutFile! %%a>nul)
del !OutFile!
)
popd
exit
 この bat は,基本的には,作られたファイルで元ファイルを上書きする。ただ,ときどき元ファイルよりサイズが大きくなる場合があるので,その場合は元ファイルを残す。 1 遍に処理できるファイル数は高々 100 程度。その辺は, cmd.exe の文字数制限のせいのような気がする。

 bat ファイルの使い方:

  1. テキストエディタを使い上記のコードで bat ファイルを作る。名前は, ‘jpegtran.bat’ ナンチャラ。ここから落とした txt ファイルの拡張子を bat に変えて使っても OK 。
  2. 作った bat ファイルを jpegtran.exe と同じフォルダに入れる。
  3. 最適化したい jpeg ファイルを, bat ファイルのアイコンにドラッグ&ドロップする。
  4. 以上

 もしこの bat を利用される場合は,「上書きするので,元ファイルは残らない」ということに留意してください。

 サイトの jpeg ファイルを全部最適化した。おかげさんで, PageSpeed Insights の図に関する小言も消えたし,パチパチ。

参考:
   1. DOS コマンド一覧
   2. Jpegtran のヘルプ

追記(2016/10/29):
 結構需要のある記事なので,使い方の追記を書くことにした(爆)。基本的には, jpeg ファイルを jpegtran.bat 上にドラッグ&ドロップするだけなのだが,以下のような使い方もできる。
 jpegtan.exe と jpegtran.bat の入ったフォルダは PC 内のどこにおいてもよい。ただ,デスクトップに jpegtran.bat のショートカットを作っておくと便利である。ショートカットは bat 自身と同じように使える。
 この bat は,処理したい jpeg の入っている範囲で検索をかけて見つかったものを「すべて選択」してドラッグ&ドロップすれば,一括処理も可能である。

カテゴリー
Windows

php.net のサーバのいくつかに何かあったらしい。

The same article in English
投稿アップデート情報  追記(10/2)

 本日, qa.php.net につながんなくて,アレっと思ったら, PHP 5.6.1 の Zip も サイト から消えていた。

 PHP のオフィシャルで何があってんだ。ググって見たら,下記の記事を発見。

 劇薬 ShellShock の副作用でっか?いや,勿論冗談です。しかし,本当に何があってんだろ。 PHP 5.6.1 の Zip を引っ込めたってことは当該ファイルに何らかの汚染があったのか。

 新しくファイルをインストールするときは,一生懸命危険性はないかチェックする。 PHP 5.6.1 の Zip についても同様に事前チェックした。しかし,さっき,もう 1 回チェックしなおした。うちのは大丈夫そうだ。もちろん, 100% の保証はないが……

 公式サイトには,何の発表もないようだ。いつになったら,正式の発表があるのかだろうか?

追記(10/2):
 PHP 5.6.1. Zip は, Oct-02 02:43:40UTC 付で戻ってきた。新旧の Zip の確認はできていないが,今から出かけなくてはいけないので,後でやってみるつもり。しかし,相変わらず公式のアナウンスは何もない。(午後 2:05)

カテゴリー
Windows

本家のお世話-#110。(PHP5.6.1へアップデート)

The same article in English

 Windows 版の PHP5.6.1 が Sep-25 06:28:30UTC に出た。近頃は,いつも Windows 版のほうが早いな。で, 5.6.0 から 5.6.1 にアップデートしたわけ。(サーバ OS は Windows7HP+SP1(x86) です。)

 php.ini-production は 1 個スペルミスの訂正があっただけで何も変わっていなかったので,新旧ファイルを入れ替えて php.ini を放り込み, httpd.exe をリスタートした。

 OPcache のバグは直っていないようだったが,いつもの手順通りで,「おしまいッ」と思ったのよ。

 ところが!! 今回はトラブルに見舞われちゃったよぉ。初めは, “PHP Warning: PHP PHP Startup: in Unknown on line 0” を Apache のエラーログで発見したこと。これだけ。 module 名とかほかに何にもなし。とはいえ, warning が 1 個だし,「まっいいか」とか思ったんだ。 PHP info をチェックしてたら大問題が発覚, php_curl.dll がロードされてないじゃないですか!! (大泣)

 やっとこ,解決策発見。 1 日かかっちゃったよ。ヤレヤレ。
 パスを通してやりました。つまり,環境変数のパスに “x:PHP install directory” を追加したわけ。これ,インストール時にやってるほうが普通だとは思うが,今まではなくても,ずーっと無問題だったんだよ。「 PHP5.6.1 でなんか変わったのかねぇ」と思ったんだが, “the curl extension doesn’t load using apache” の日付を見て,考えを改めた。 Windows Security updates がらみのほうが,ありそうな気がする。

 何はともあれ, PHP5.6.1 は無事動くようになった。

 インストールについて詳しい情報が必要な場合は,「PHP 5.5.16 から PHP 5.6.0 への移行」をご覧ください。

カテゴリー
Windows

本家のお世話-#109。(PHP 5.5.16 から PHP 5.6.0 への移行)

The same article in English

 予定通りというか, Aug-27 21:52:22 に Windows 版の PHP5.6.0 が出た。ここのところよくあるのだが, php.net より半日ばかり早かった。そんなわけで,今日の午後, PHP 5.5.16 から PHP 5.6.0 に移行した (Windows7 HP + SP1 (x86))。で, ChangeLog

 「PHP 5.6.x にしても,現在のコードはほぼそのままで動きます。ほんのわずか,考慮すべき few incompatibilitiesnew features がありますので,これについては,バージョン変更の前にテストしておいてください」ということらしいのだが,うちの環境でも,コードの書き換えは特に必要なかった。もっとも,我が家の場合は, PHP 5.5.16 から PHP 5.6.0 だから,すごく古いバージョンからとなれば,それなりに対処が必要になる。

 そうは言いつつ, php.ini はだいぶ変えた。というのが, PHP 5.6.0 ではデフォルトで UTF-8 になったので, mbstring についての細かいカスタマイズはいらないだろうと思ったからだ。

【注】 ところで,PHP スクリプトの開発環境を作るのでない限りは, php.ini の元ファイルには, php.ini-production INI file を使うべきである。これは,オフィシャルの INI 内にちゃんと書いてあるのだが,いまだに php.ini-development INI file の使用を勧めているサイトもあって,困ったもんだと思っていたので,この際明記しておく。

 以下に今回作った PHP 5.6.0 用の php.ini の変更点を示す。 Drive_SV はサーバソフト用のパーティションである。

  デフォルト カスタム
1 output_buffering = 4096 output_buffering = Off
2 disable_functions = disable_functions =”shell_exec, suexec, passthru, phpinfo”
3 expose_php = On expose_php = Off
4 ; extension_dir = "ext" extension_dir = "Drive_SV:PHPext"
5 allow_url_fopen = On allow_url_fopen = Off
6 ;extension=php_curl.dll extension=php_curl.dll
7 ;extension=php_gd2.dll extension=php_gd2.dll
8 ;extension=php_mbstring.dll extension=php_mbstring.dll
9 ;extension=php_mysqli.dll extension=php_mysqli.dll
10 ;extension=php_openssl.dll extension=php_openssl.dll
11   zend_extension= "Drive_SV:PHPextphp_opcache.dll"
12 ;date.timezone = date.timezone ="Asia/Tokyo"
13 ;sendmail_from = me@example.com sendmail_from = My email address
14 mysql.allow_persistent = On mysql.allow_persistent = Off
15 ;opcache.enable=0 opcache.enable=1
16 ;opcache.memory_consumption=64 opcache.memory_consumption=128
17 ;opcache.interned_strings_buffer=4 opcache.interned_strings_buffer=8
18 ;opcache.max_accelerated_files=2000 opcache.max_accelerated_files=4000
19 ;opcache.revalidate_freq=2 opcache.revalidate_freq=60
20 ;opcache.fast_shutdown=0 opcache.fast_shutdown=1

 1 と 14 の設定はサーバの環境によっては,不具合が生じることがあるかもしれない。 11 および 15 – 20 は OPcache のためなので, OPcache を使わない場合は,デフォルトのままでよい。移行から1日。 php_opcache.dll でエラー頻発。解決策がわかるまで使用中止にした。 mbstring の細かい設定を変えたことで,何か影響が出るかなぁ。様子見の予定。

 MySQL Extension は使うのをやめた。うちの環境だと,もう MySQLi Extension だけでいいようだ。

 現時点の自鯖の環境。

 おっと,書き忘れるとこだったが,今回,実は,「Bad Host request」が出た。犯人は, BulletProof Security だった(爆笑)。そんなわけで,1回ヤツを停止後, PHP を移行し,改めて有効にした。これはぬれぎぬ。犯人は, php_opcache.dll だった。 BulletProof Security くん,ごめんなさい。

カテゴリー
Windows

覚え書-#19。

The same article in English

 なんでだかすごく疲れているので,やったことのメモだけ。

 うちのサーバ OS は Windows7 HP SP1 (x86)。

  1. PHP 5.5.15 (php-5.5.15-Win32-VC11-x86.zip)
    —> PHP 5.5.16 (php-5.5.16-Win32-VC11-x86.zip)
  2. MariaDB 10.0.12 (mariadb-10.0.12-win32.zip)
    —> MariaDB 10.0.13 (mariadb-10.0.13-win32.zip)
  3. phpMyAdmin 4.2.7 (phpMyAdmin-4.2.7-english.zip)
    —> phpMyAdmin 4.2.7.1 (phpMyAdmin-4.2.7.1-english.zip)

 全部,単なるセキュリティアップデート。なので,速やかに対処。

カテゴリー
Windows

覚え書-#18。

The same article in English
投稿アップデート情報  追記(8/28)
  1. PHP 5.6.0 GA の正式リリースの時期が, RC4 の記事に書いてあった。とーっても楽しみ。 wow!
  2. Apache 2.4.10 (httpd-2.4.10-win32-VC11.zip) を openssl-1.0.1i のものに,アップデートした。 OpenSSL Security Advisory [6 Aug 2014] のせいなんだが, Steffen が Jan-E に “Coming days the builds here at Apache Lounge are going to be upgraded. It has not that priority and severity ~” と回答していたので,焦らずに待っていたのだ。
  3. Windows Update 2014 年 8 月はトラブル続出だったみたいだね。うちのパソコンは幸いにも1台も引っかからなかったんだが,現時点で特に問題がなくても KB2982791, KB2970228, KB2975719 and KB2975331 をアンインストールしたほうがいいということらしいので,探し出してアンインストールした。以下の通り。
    • NJ2100 上の Windows8.1(x86)
      KB2982791
      KB2975719
    • CF-J10 上の Windows7 SP1(x64)
      KB2982791
      KB2970228
    • xw4200 上の Windows7 SP1(x86)
      KB2982791
      KB2970228
    • KeyPaso 上の Windows Vista SP2(x86)
      KB2982791

    昔は, Windows update というとほぼ毎回不具合があって,少し落ち着くまで更新を控えたりしたものだが,今回のドタバタは久しぶりだった気がする。皆さんはどう思われますか? (^_~)

追記(8/28):
 MS14-045 関連の不具合更新プログラム, KB2993651 が出てますな。詳しくは,[MS14-045] 更新プログラム 2982791 の問題を解決する更新プログラム 2993651 を公開

カテゴリー
Windows

マイクロソフト セキュリティ アドバイザリ 2915720 の続き。

The same article in English

 台風(Halong)が来てますねぇ。でも,何となく大丈夫そうな我が家辺。しかし,「備えあれば患えなし」ですからネ。なめずにチャンとやっときまっしょい!!

 ところで,「マイクロソフト セキュリティ アドバイザリ 2915720 ???」 というのを前に書いたが,ご記憶だろうか。この記事は, 8/12 も近づいてるが,あれはどうなってるんだろうと思ったという話。

 ここのところ,翻訳ほうで頭がいっぱいで,マイクロソフト セキュリティ アドバイザリ 2915720 の更新記事を見逃していたのだが,昨日気づいた。

 結論から言うと,「マイクロソフトが、サポートされているリリースの Microsoft Windows で、より厳格な検証動作を既定の機能として適用する計画を中止したことをお知らせしました。」ということらしい。ただし,「この機能は引き続き、お客様が使用するかどうかを選択する機能として提供されます。」ということで,レジストリの中にひっそりと残るようだ。

 ネット上の話によると,思ったよりもずっと影響が大きなことを改めて認識して,今回は,撤回したということらしいんだけどネ。