【XAMMP】バーチャルホスト + SSL証明書を有効にする <Windows>
ローカルでささっと確認するのにXAMPPを使っているのですが、テストしたりするのにXAMPP環境もSSL化しておかないとなっていうことで、調べながら対応させたのでメモ。
目的
https://site01/
https://site02/
でアクセスできるようにする。
環境:Windows7、Google Chrome
1.バーチャルホストの設定
1.php.iniファイルを確認
extension=php_openssl.dllがコメントアウトされていないか確認
xamppをC直下にインストールした場合は以下のパス
C:\xampp\php\php.ini
デフォルトではされていないもよう。
;extension=php_openssl.dll ↓ extension=php_openssl.dll
頭に ; がついていたら削除
2.httpd-ssl.confの編集
以下のファイルに追記
C:\xampp\apache\conf\extra\httpd-ssl.conf
<VirtualHost *:443> ServerName site01 DocumentRoot "C:/xampp/htdocs/site01" SSLEngine on SSLCertificateFile "conf/ssl.crt/server.crt" SSLCertificateKeyFile "conf/ssl.key/server.key" </VirtualHost> <VirtualHost *:443> ServerName site02 DocumentRoot "C:/xampp/htdocs/site02" SSLEngine on SSLCertificateFile "conf/ssl.crt/server.crt" SSLCertificateKeyFile "conf/ssl.key/server.key" </VirtualHost>
DocumentRootにはルートディレクトリのパスを指定。
SSLCertificateFile "conf/ssl.crt/server.crt"
SSLCertificateKeyFile "conf/ssl.key/server.key"
のパスはバージョンによってか変わるみたいなので、httpd-ssl.conf内でSSLCertificateFile・SSLCertificateKeyFileで検索して同じパスを設定しておく。
2.hostsファイルの編集
hostsファイル追記します。通常以下のパスにあります。
C:\Windows\System32\drivers\etc\hosts
一番最後に以下を追記します。
127.0.0.1 site01 127.0.0.1 site02
保存したらApatcheを再起動してブラウザで一旦確認。
https://site01/でブラウザでアクセスしてみます。
こんな感じで警告が表示されますが、site01にアクセスする(安全ではありません)からとりあえず無理やり表示。
アドレスバーに以下のように警告が表示されますが、ひとまずバーチャルホストの設定はOK。
2.SSL証明書の発行と設置
1.OpenSSL設定ファイルを編集する
C:\xampp\apache\conf\openssl.cnfをコピーして、openssl-san.cnfにリネーム。
一番下に以下を追記します。
[ SAN ] subjectAltName = @alt_names [ alt_names ] DNS.1 = localhost DNS.2 = site01 DNS.3 = site02
2.サーバ証明書、秘密鍵の作成
Git Bashなら、そのままopensslコマンドを使えるということなので、Git Bahを使いました。
# ディレクトリ移動 $ cd /c/xampp/apache/conf # サーバ証明書、秘密鍵を生成 $ openssl req \ > -newkey rsa:4096 \ > -keyout my-server.key \ > -x509 \ > -nodes \ > -out my-server.crt \ > -subj "//CN=localhost" \ > -reqexts SAN \ > -extensions SAN \ > -config openssl-san.cnf \ > -days 3650 Generating a 4096 bit RSA private key .............................................................................................................................++ ...............................................................++ writing new private key to 'server.key' -----
これで $C:\xampp\apache\confに、 my-server.crt とmy-server.key ができました。
このファイルをそれぞれ以下のディレクトリに移動します。
my-server.crt → C:\xampp\apache\conf\ssl.crt\
my-server.key → C:\xampp\apache\conf\ssl.key\
3.サーバ証明書、秘密鍵のパスを変更
C:\xampp\apache\conf\extra\httpd-ssl.conf のサーバー証明書と秘密鍵のパスを作成したファイル名に書き換えます。
<VirtualHost *:443> ServerName site01 DocumentRoot "C:/xampp/htdocs/site01" SSLEngine on #server.crtをmy-server.crtにserver.keyをmy-server.keyに書き換え SSLCertificateFile "conf/ssl.crt/my-server.crt" SSLCertificateKeyFile "conf/ssl.key/my-server.key" </VirtualHost> <VirtualHost *:443> ServerName site02 DocumentRoot "C:/xampp/htdocs/site02" SSLEngine on SSLCertificateFile "conf/ssl.crt/my-server.crt" SSLCertificateKeyFile "conf/ssl.key/my-server.key" </VirtualHost>
4.証明書のインストール
1.C:\xampp\apache\conf\ssl.crt\my-server.crt をダブルクリックし、証明書ウィンドウが開いたら証明書のインストールを選択。
2.証明書をすべて次のストアに配置するを選択。
3.参照ボタンをクリックし、信頼されたルート証明機関を選択し次へをクリック。
4.セキュリティ警告がでますが、はいを選択
以上で、証明書がインストールされました。
5.確認
apacheを再起動し、
https://site01/ でアクセスしてみます。
アドレスバーが保護された通信になっていたら成功です。
参考記事
IRKit + Google Home + IFTTT でスマートじゃない家電を操作する
Google Homeがうちにやってきたので、やっぱ音声アシスタントといえば家電を操作したいよね。といってもうちの家電はスマートでもなんでもなく7年前の霧ヶ峰なので、以前から使っているIRKitをそのまま使ってやってみたのでその時のメモです。
IRKitはいわゆる学習リモコンで赤外線情報を学習してWiFiを通じて家電を操作できるもので、IRKitと同じWiFiにいなくても、外出先から赤外線信号を送るための、インターネット上にあるサーバのAPIも公開しているという素敵なものです。
- 1.IRKitのIPアドレスを取得
- 2.赤外線信号を取得
- 3.コマンドで赤外線信号を送ってみる
- 4.clienttoken, clientkey, deviceid を取得する
- 5.APIリクエストの作成
- 6.Google Home→IFFFT経由でIRKitに信号を送る
- 7.Google Homeで実際に確認
- 参考記事
1.IRKitのIPアドレスを取得
IRKit公式ではBonjourで取得する方法が紹介されていましたが、私はルータの設定画面で確認しました。
こんなかんじで私の環境では192.168.11.2でした。
2.赤外線信号を取得
IRKitで受信した最も新しい赤外線信号を返してくれます。
192.168.11.2のところはIRKitのIPアドレスです。
% curl -i "http://192.168.11.2/messages" -H "X-Requested-With: curl" HTTP/1.0 200 OK Access-Control-Allow-Origin: * Server: IRKit/3.0.0.0.g85190b1 Content-Type: text/plain {"format":"raw","freq":38,"data":[18031,8755,1190,1190,1190,3341,1190,3341,1190,3341,1190,1190,1190,3341,1190,3341,1190,3341,1190,3341,1190,3341,1190,3341,1190,1190,1190,1190,1190,1190,1190,1190,1190,3341,1190,3341,1190,1190,1190,3341,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,3341,1190,3341,1190,3341,1190,3341,1190,3341,1190,65535,0,9379,18031,4400,1190]}
3.コマンドで赤外線信号を送ってみる
{"format":"raw","freq":38,".... } のところはさっき取得した赤外線信号にします。
% curl -i "http://192.168.11.2/messages" -H "X-Requested-With: curl" -d '{"format":"raw","freq":38,"data":[18031,8755,1190,1190,1190,3341,1190,3341,1190,3341,1190,1190,1190,3341,1190,3341,1190,3341,1190,3341,1190,3341,1190,3341,1190,1190,1190,1190,1190,1190,1190,1190,1190,3341,1190,3341,1190,1190,1190,3341,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,3341,1190,3341,1190,3341,1190,3341,1190,3341,1190,65535,0,9379,18031,4400,1190]}'
ピッっとエアコンがついたらここまで成功☆
4.clienttoken, clientkey, deviceid を取得する
この赤外線信号を外部から送信するために、IRKitのclienttoken, clientkey, deviceid を取得します。
clienttokenを取得
% curl -i "http://192.168.11.2/keys" -d '' -H "X-Requested-With: curl" HTTP/1.0 200 OK Access-Control-Allow-Origin: * Server: IRKit/3.0.0.0.g85190b1 Content-Type: text/plain {"clienttoken":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}
取得したclienttokenからclientkey, deviceid を取得。
% curl -i -d "clienttoken=XXXXXXXXXXXXXXXXXXXXX" "https://api.getirkit.com/1/keys" HTTP/1.1 200 OK Server: openresty Date: Thu, 08 Mar 2018 14:45:52 GMT Content-Type: application/json; charset=utf-8 Content-Length: 94 Connection: keep-alive Access-Control-Allow-Origin: * Access-Control-Allow-Headers: X-Requested-With X-Content-Type-Options: nosniff {"deviceid":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","clientkey":"XXXXXXXXXXXXXXXXXXXXXXX"}
5.APIリクエストの作成
clientkeyとdeviceidのところはさっき取得したものにします。
https://api.getirkit.com/1/messages?clientkey=XXXXXXXXXXXXXXXXXXXXXXX&deviceid=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&message={"format":"raw","freq":38,"data":[18031,8755,1190,1190,1190,3341,1190,3341,1190,3341,1190,1190,1190,3341,1190,3341,1190,3341,1190,3341,1190,3341,1190,3341,1190,1190,1190,1190,1190,1190,1190,1190,1190,3341,1190,3341,1190,1190,1190,3341,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,3341,1190,3341,1190,3341,1190,3341,1190,3341,1190,65535,0,9379,18031,4400,1190]}
6.Google Home→IFFFT経由でIRKitに信号を送る
ここから先はIFFFTというサービスを使いました。IFFFTはサービスとサービスを連携させる仕組みを提供しているシステムで、例えば「Instagramにアップした画像をDropboxに保存する」とか「Gメールにスターをつけたら自動的にEverNoteに保存する」とかIF(もし)○○したら△△するというのを組み合わせを好きなようにつくれます。 今回はGoogle Homeに話したらWebhookでIRKitのAPIにリクエストするということになります。
IF(Google Homeにあるフレーズを話したら)を設定する
IFTTTへのログインはすませておき、My Applets > New Applet を選択。
「if + this then that」の + this をクリック。検索に「google」と入力するとGoogle Assistantが出てくるのでこれを選択。そしてSay a simple phraseを選択します。
ここでGoogle Homeにトリガーとなるフレーズを設定するんですが、ちょっと壁が…。「エアコンをつけて」とか「エアコンオンにして」とかにすると、もともとスマート家電用に予約されているようで、Google Homeに「設定ができていない」とかなんとか怒られてしまいました。
(これは後で解決したのでこちらで記事にしてます)
Google Home で予約語「エアコンつけて」を使えるようにする - Silent Lips
回避方法はあとで調べようってことで、ひとまずエアコンに「ぽかぽかさん」とかニックネームつけるかなーとつぶやいていたら、横から
「エアーコントローラーオンにして」 にしたら?
というアドバイスが…
エアコンはエアーコントローラーの略じゃないでしょ…と思いつつ、つっこむのが面倒だったのでそのまま設定します。
What do you want the Assistant to say in response? のところはGoogle Home からのレスポンスなので「エアーコントローラーok」としました。エアコンはエアーコントローラーの略ではありません。
Languageは日本語なのでJapaneseに設定したら create trigger でセット。
that(IRKitのAPIにリクエストを送信)を設定する。
「if then + that」の+ thatをクリックして検索に「webhooks」と入力するとwebhooksがでてくるのでこれを選択。さらにMake a web requestを選択。
1.URLのところにさっき 5.APIリクエストの作成 でつくったURLをいれる。
2.MethodはPOSTに設定
3.Content Typeはtext/plain
4.Creat action で登録
5.Finish ボタンで終了
7.Google Homeで実際に確認
エアーコントローラーオンにして と問いかけるとピッとエアコンの電源が入り、 エアーコントローラーokです と返してくれました。
あと、エアコンはエアーコントローラーの略ではありません。
参考記事
IRKit - Open Source WiFi Connected Infrared Remote Controller
【Terraria】TerrariaをドラクエのBGMでプレイする【WaveBank】
「Terraria」がおもしろいです。
久々に人生棒にふるくらいおもしろいです。
私はPC版でプレイしていますが、PS版やWii U版やスマホアプリまであるくらい色んなハードで出てるけど、あんまり聞いたことがなくてメジャーなのかマイナーなのかわからないゲーム「Terraria」。
このドットと横スクロールの世界観で一見ライトな感じなのに総アイテム数2000以上とかなんとかでやり込み要素もありどっぷり没入するハードコアなゲーム「Terraria」。
この世界観はぜひ初期ドラクエのビットサウンドでプレイしたいよね!ということで、Terrariaをインストールしたらまずは、TerrariaのBGMをドラクエ化しましょう。
1.Wave Bank.xwbのバックアップ
steam版TerrariaのBGMデータはゲームデータ内のWave Bank.xwbというファイルで、このファイルは複数のサウンドデータがグループ化されているものです。この中に全てのBGMが入っているのでこのファイルを置き換えることでBGMをドラクエ化します。
通常以下のパスにあるかと思います。コピーするなどしてバックアップをとっておきましょう。
C:¥Program Files (x86)¥Steam¥steamapps¥common¥Terraria¥Content¥Wave Bank.xwb
2.QuickWaveBankのダウンロード
以前やったときは、ちょっと大変だったんですが、簡単にWave Bankデータをつくれるツールを公開している方がいました。ありがとうございます。
ここからQuickWaveBankをダウンロードします。現時点での最新版は1.0.2.3なのでこれを適当な場所に保存。
3.Wave Bankの中身をとりだす
もともと入っているTerrariaのサウンドデータを取り出します。この手順をふまなくてもWave Bankファイルは作れるのでとばしてもかまいませんが、一部オリジナルのサウンドを使うなどの場合は中身をとりだしておきましょう。雨の効果音も入っているのでそこらへんはオリジナルデータを使った方がいいかもしれません。
1.ダウンロードしたQuickWaveBank-1.0.2.3.exeを起動
2.下の方にある【Ectract】ボタンをクリック
3.ファイル選択のダイアログが開くので以下のファイルを選択
C:¥Program Files (x86)¥Steam¥steamapps¥common¥Terraria¥Content¥Wave Bank.xwb
4.保存先を聞かれるので適当にデスクトップなどに保存用のフォルダを作成して【OK】ボタンをクリック
5.指定したフォルダにwaveファイルが展開されました
これがTerarraのBGMデータになります。
4.置き換え用のWave Bankデータの作成
以下リストがTerrrariaのBGMリストです。
- Overworld Night
- Eerie
- Overworld Day
- Boss 1
- Title Screen
- Jungle
- Corruption
- Hallow
- Underground Corruption
- Underground Hallow
- Boss 2
- Underground
- Boss 3
- Snow.
- Space
- Crimson
- Boss 4
- Alt Overworld Day
- Rain
- Underground Snow
- Desert
- Ocean
- Dungeon
- Plantera
- Boss 5
- Temple
- Eclipse
- Rain Ambience
- Mushrooms
- Pumpkin Moon
- Alt Underground
- Frost Moon
- Underground Crimson
- Lunar Event
- Pirate Invasion
- Hell
- Martian Madness
- Moon Lord
- Goblin Invasion
- Sandstorm
- Old One's Army
1曲目がOverworld Nightなので森林の夜。2曲目はEerieでブラッドムーンですね。
どの曲がどの場所のなのかわからなければこちらを参考に。(英語)
Music - Official Terraria Wiki
後はこの順番にQuickWaveBankにwaveファイルを追加していきます。
利用できるファイルはwaveファイルのみでmp3などは使えません。mp3などしかない場合は、以下のエンコードソフトなどをつかって変換しておきましょう。
1.QuickWaveBankを起動
2.QuickWaveBankのウィンドウに上のTerraria BGMリストの曲順通りに置き換えたいサウンドファイルを追加していきます。ファイル名はなんでもかまいませんが日本語が入っているとファイル作成時にエラーがでるっぽいので半角英数字にしておきましょう。置き換えたいファイルはお好みで。ですが、5曲目のTitle Screenはタイトル画面なのでドラクエ3のテーマをお勧めします。
追加するファイルの置き場がデスクトップなどの場合、パスのユーザー名に日本語が入っているとファイル作成時にエラーがでるのでCドライブ直下などにフォルダを作るなどして置いておきましょう。
3.すべての曲を追加し終わったら上のOutput Fileのフォルダアイコンをクリックし、ファイルの保存場所を適当な場所に設定し、一番下の【Build】ボタンをクリックするとWave Bank.wxbが作成されます。
4.作成したファイルで以下の場所のファイルを置き換えます。
C:¥Program Files (x86)¥Steam¥steamapps¥common¥Terraria¥Content¥Wave Bank.xwb
5.terrariaを起動し、タイトル画面であのテーマ曲が流れれば成功です!
ENJOY Terraria!!!!
個人で楽しむ範囲で遊びましょうー。
ゲーム音源はご自身で購入してくださいね。