流れるまにまに。

自分で学んだこととか、誰かに教わったこととか、誰かに教えたこととか。

【Azure】AzureRMS環境を構築する

AzureRMSを利用する機会があったので、メモ。
個人でAzureRMSを使う人なんているのか不明だけど、使ってみると本当に面白い技術だな。と。

(というか、個人でActiveDirectory使うのってどんな場面だろう。。。)

普段クラウドも使わないし、サーバーだってままならない人間には色んな刺激がありました。

というか、もっとAzure触りたいなぁ。。。


と、いうことでAzureRMS環境を構築するメモ!

環境構築が終わったら、AzureRMSのAPIを使ってアプリを作るよ!


目次というか流れはこんな感じ。

 

ちなみに、AzureActiveDirectoryは新ポータルからでも使用することができるけど、AzureRMSは旧ポータルからでないと使用できないので、全ての作業は旧ポータルで行う必要がありました。(2017年03月現在)
新ポータル:https://portal.azure.com
旧ポータル:https://manage.windowsazure.com 

 

1. AzureActiveDirectoryの作成

①Azureポータルにサインインする。
②左側のメニューから[ACTIVE DIRECTORY]を選択する。
③下メニューの[+新規]で新しいActiveDirectoryを作成する。。

f:id:piyomani:20170312023057p:plain

f:id:piyomani:20170312023223p:plain

 

ここで設定するドメイン名は、以降他の人が作成できなくなるドメイン名なので、テスト用の場合、「~~test」等にした方が無難。
本ちゃん環境で偉い人に指定された名前が使えない!ってなったら大変みたいなので。。。

 


2. AzureRMS有効化

①左メニューで[ActiveDirectory]を選択する
②[RIGHTS MANAGEMENT]を選択し、作成したActiveDirectoryを選択。下メニューで[アクティブ化]を選択。

f:id:piyomani:20170312024741p:plain


これだけ!

これでAzureのActiveDirectoryと、そのRIGHTS MANAGEMENTの完成!

 

 

ちなみに、通常のAzureアカウントだけではRMSの機能は使えなくて、

Azure Active Directory Premiumを契約しなきゃいけないので注意。

 

金無し、権限無しの私は、

VSのサブスクリプションに付いてる無料分Azureを使用して、

Azure Active Directory Premiumは30日無料試用版で突っ込みました。

忘れそうなので、その辺もメモっておこう!

【Linux】CAサーバーを作成してオレオレ証明書認証のSSLサーバーを構築する!【shellscript】

自分で作ったCA(認証局)サーバーを作って、SSLサーバーを構築する手順。

こんな感じの環境を作ったので、勉強用メモ。

f:id:piyomani:20170304050033j:plain

使うソフトウェアはこれら
OS:Ubuntu 16.04 LTS x64(JP)
 http://cdimage.ubuntulinux.jp/releases/16.04/ubuntu-ja-16.04-desktop-amd64.iso
Apache2
OpenSSL
ちなみに、CAサーバーも、Webサーバーも1台のWindowsPC上のWMwareで動作させてます。
エコだね!!


構築手順はこんな感じ。

↑これ全部スクリプトで一発で出来ると次回環境構築時に楽だよね!
とか思って作ったけど、0と4はまだちゃんと動かないです。


0.環境に必要ソフトをインストール

この作業はWebサーバー/CAサーバー共通。
全コマンドをまとめてスクリプトにしたらインストール失敗したので、一発ずつコマンドした方がいい。

①opensslのインストール

apt-get install openssl

②apache2のインストール

sudo apt-get install apache2
apt-get update

apacheSSL設定を有効化

a2enmod ssl
a2ensite default-ssl
/etc/init.d/apache2 restart

 

apt-get投げた時に、
archive.ubuntu.com' が一時的に解決できません
ってエラーが出てインストールできな状態にはまりました。
原因は、VMwareでIP固定してたのに、DNSの設定がうまく読み込めてなかったみたいです。
/etc/resolvconf/resolv.conf.d/base
の中身を
nameserver (DNSのIP)
に書き換えて解決。


1.CA(認証局)作成

"piyoCA"なる認証局を作成!
使いたい放題のオレオレ証明書だよ!!
スクリプトと全コマンドは以下。

 

認証局として必要なファイル、ディレクトリを作成

mkdir /etc/ssl/piyoCA
mkdir -p /etc/ssl/piyoCA/certs
mkdir -p /etc/ssl/piyoCA/private
mkdir -p /etc/ssl/piyoCA/crl
mkdir -p /etc/ssl/piyoCA/newcerts
chmod 700 /etc/ssl/piyoCA/private

色々格納に必須なディレクトリを作成して、

echo 01>/etc/ssl/piyoCA/serial
touch /etc/ssl/piyoCA/index.txt

今後作っていく証明書をラベリングしたりするのに使うファイルを初期化。

 

②opensslの設定ファイルを作成CAに合わせて修正

/etc/ssl/openssl.cnfの以下の部分を修正

dir = /etc/ssl/piyoCA
[ CA_default ]のdirを前手順で作成した認証局フォルダに設定

organizationName = optional

[ policy_anything ]のorganizationNameをoptionalに設定。

 

スクリプト内だと、対象の記述を一旦コメントアウトしてから、その次の行に新しく記述とかやってますが、直接編集するんじゃなくて、コピって、新しいcnfを編集して、使うたびに呼び出した方が安全なのかも。

 

秘密鍵と自己証明書を作成

openssl req -new -x509 -newkey rsa:2048 -out CAcert.pem -keyout private/CAkey.pem -days 365

 成功すれば、CAkey.pemという秘密鍵とCAcert.pemという自己証明書が作成されます。

 作成時に秘密鍵にかけるパスワードと証明書情報を聞かれます。適当に鍵のパスワードを”piyoca”とかにしておきます。

 

 

2.WebサーバーのCSR要求作成

SSLサーバーの元となるWebサーバーを作成。
スクリプトと全コマンドは以下。

①必要ファイルを格納するディレクトリを作成

mkdir /etc/ssl/www.piyoweb.com

②Webサーバー用秘密鍵作成

openssl genrsa -des3 -out ./web.key 204
鍵の名前は適当に"web.key"にして、鍵につけるパスワードも聞かれるので、適当に"piyoweb"とかにしておきます。

CSRファイル作成

CSRは、"Certificate SigningRequest"の略。要は「こういう証明書くれ!」っていうもの。
今回は「SSLサーバーで使う証明書くれ!」ってやつに自分の秘密鍵で署名したものを作成。
openssl req -new -key ./web.key -out ./web.csr
-keyでさっき作成した鍵(web.key)を指定。
作成されるCSR要求ファイルの名前は適当に"web.csr"とかにしておきます。
最初に鍵のパスワードが聞かれるので、鍵を作成した際に使用した”piyoweb”を指定。
証明書情報を色々と聞かれるけど、
Country/ State/Locality/company/Unitは適当でOK。(Countryは2文字限定)
CommonNameはWebサーバーのURL。今回は同一ネットワーク内のテスト環境なので、Webサーバー環境のIPアドレスを指定(192.168.1.7)。
Emailは適当。なくてもOK。
challengeは適当なパスワードを設定。
optionalは何も設定しなくてOK。

上手くいけばweb.csrができます。

 

3.CSRに応じてSSL証明書発行

CSRファイルのコピー

前手順で作成したCSRファイル(web.csr)をCAサーバー側にコピー。

②証明書発行

CAサーバーでオレオレ証明書で作られたサーバー証明書を発行。

$sudo openssl ca -in web.csr -out sslcert.pem

認証局の鍵のパスワードが聞かれるので、今回は"piyoca"を入力。

成功すればサーバー証明書(sslcert.pem)が作成される。

この際、以下のエラーで失敗した場合
TXT_DB error number 2
証明書要求が衝突しているらしい。なので、いったん取り下げる
openssl ca -revoke /etc/ssl/(作成したCA)/newcerts/00.pem
(最後の"00.pem"の部分は発行要求した証明書の数による。大体/etc/ssl/testCA/serial.oldの番号)

 


4.WebサーバーにSSL証明書を登録

①作成した証明書をコピー

作成した証明書(sslcert.pem)をCAサーバー側からコピー。

②証明書をwebサーバーに登録

コピーした証明書を使用するようにWebサーバー側のapacheの設定ファイルを編集。

編集箇所は/etc/apache2/sites-available/default-ssl.conf内のSSLCertificateFileとSSLCertificateKeyFile。SSLCertificateFileにCAサーバーで発行してもらった証明書、SSLCertificateKeyFileにWebサーバーの秘密鍵を登録

今回は鍵も証明書も /etc/ssl/www.piyoweb.com/以下に置いたので、こんな感じ

Webサーバー側のアパッチの設定ファイルを書き換える
SSLCertificateFile /etc/ssl/www.piyoweb.com/sslcert.pem

SSLCertificateKeyFile /etc/ssl/www.piyoweb.com/web.key

apacheの再起動 

設定ファイルを反映させる為に、webサーバーのapacheを再起動!

/etc/init.d/apache2 restart

 

これで準備完了!!

 

ちなみに、手順3.4.の、コピーして、CSRの証明書を発行して、それをまたコピーして、って動作がだるかったので、PHPの簡易アプリを作りました。

それはまた別の場所にメモる。

 

5.できたかな!

SSL証明書が登録されて、SSL通信ができるかのテスト。
Webブラウザで、Webサーバーにhttpsで接続!
証明書を登録する前は「危ないよ!」って警告が出るけど、証明書登録後は警告無しにApacheのデフォルト画面が表示されるように!証明書の登録は、ブラウザによって違うけど、「設定」→「証明書」とかで。

f:id:piyomani:20170304050203j:plain

これでSSLサーバー作成完了!✧٩(ˊωˋ*)و✧

 

 

オレオレ証明書って、ドライバのテストの時とかはよく使うけど、
認証局サーバーを立てるってのは初めてだから楽しかった( *´ω`)

あと、"オレオレ証明書"っていう言い方が一般的だと知って、なんだか嬉しくなりました。

 

 


参考にさせていただいたページ

http://stacktrace.hatenablog.jp/entry/2015/12/12/102945

http://www.aconus.com/~oyaji/www/certs_linux.htm




【インストーラ】WixEditでアプリ実行のカスタムアクションを追加する【WiX】

WiXで作成されたインストーラで、別のインストーラ(.exe形式)を実行する方法。

 

色んなインストーラ(InstallShield、VS、WiX)いじってて、共有の部分はあれど、頭こんがらがる(´×ω×`)

 

とりあえず言えるのは
WiXWiX Editを使用すると格段に楽!!!!

やれることに限界はあるんだろうけどね。
vbsとかdllとか書かなくても簡単なカスタムアクションなら楽勝!

 

①実行対象のアプリをresourcesに追加する

f:id:piyomani:20170221234419p:plain

 

 

②Actionの[CustomActions]タブで①に登録したBinaryを追加する
BinaryKey:①で追加したやつの左側の名前
ExeCommand:実行する時の引数
Id:このカスタムアクションの名前
Return:戻り値を待つかどうかの設定

f:id:piyomani:20170221234555p:plain

 

③Actionの[ExecuteSequence]タブでカスタムアクションの実行タイミングを追加
今回は「インストール後、インストール時のみ」なので、
[New]して、以下のパラメータをセット
 After:InstallFinalize
 InnerText:NOT Installed AND NOT REMOVE

f:id:piyomani:20170221234656p:plain

 

完了!!

らくちん(*'ω'*)

 

【インストーラ】「プログラムの追加と削除」に関わる設定について【Installshield】

Installshieldの「プログラムの追加と削除」に関わる設定やらやら。

使用環境はInstallshield 2013

 

ドライバインストーラを作って、インストールしたのに「プログラムの追加と削除」に表示されない問題が発生。

眠かったからどっか間違って設定変えちゃったのかな。

眠い時って無駄に色んなタブ開いたり、設定見たりするよね。。。

 

 

とりあえず関連する設定場所は2つ

[インストール情報]→[一般情報]→[プログラムの追加と削除]
・「変更ボタンを無効にする」を「いいえ」
・「削除ボタンを無効にする」を「いいえ」

f:id:piyomani:20170204011549p:plain

もう一つ。
[メディア]→[リリース]→対象リリース→[ビルド]タブ
・「[追加/削除]パネルエントリを隠す→「いいえ」

f:id:piyomani:20170204012158p:plain

この2つ目がなんでか「はい」になってました。

そりゃ出てくるわけないわ(*'ω'*)

 

ここ直して...(*'ω'*)

ビルドし直して...(*'ω'*)

インストールすれば、ほーら(*'ω'*)

 

ほーら...(*'ω'*)

 

...(*'ω'*)

 

......(*゜ω゜*)

 

.........…(゜ω゜)

 

...………直ってない(゜д゜;)!!??

 

 

多分、普通に寝ぼけて設定変えただけ、っていうのなら上記の内容で直るみたいですが、

今回の件はそれとは関係なかったみたいです。

実際の原因はインストール対象のドライバのinfを変えたことにあったみたいです。

 

ユニバーサルドライバ対応にあたって、以下の記述を消す必要があって、

とりあえずコメントアウトしてた結果、

プログラムの追加と削除に出なくなってたみたいでした。

 

---------  driver.inf  ----------------------

[driver_Uninst_Reg]
;HKLM,Software\Microsoft\Windows\CurrentVersion\Uninstall\PiyoDriver, "UninstallString",,"%10%\uninst.exe"
;HKLM,Software\Microsoft\Windows\CurrentVersion\Uninstall\PiyoDriver, "DisplayName",,"Driver pro"
;HKLM,Software\Microsoft\Windows\CurrentVersion\Uninstall\PiyoDriver, "Publisher",%REG_SZ%,%Publisher%
;HKLM,Software\Microsoft\Windows\CurrentVersion\Uninstall\PiyoDriver, "DisplayVersion",%REG_SZ%,%DriverVersion%

---------------------------------------------------------

 

ユニバーサル対応も大変だ...



 
 

【C++】マニフェストファイルの対応OS記載について【インストーラ】

InstallShieldにて、OSによってインストールするドライバを変える処理をInstall Script内で行っていました。

10対応で、10のみ新しいドライバをインストールする!
ってなった時になんだかうまく動かなかったのでメモ。

 

Install Scriptはこんな感じ

////////////////////////////////////////////////////////////////////////

File Name: Setup.rul
//////////////////////////////////////////////////////////////////////
  ~~色々
   // Windows 7/8/8.1
 if ((SYSINFO.nWinMajor = 6) && ((SYSINFO.nWinMinor = 1) || (SYSINFO.nWinMinor = 2) || (SYSINFO.nWinMinor = 3))) then
             //インストール処理;
 elseif(SYSINFO.nWinMajor = 10) then
            // 10用インストール処理
    else
            //その他ドライバインストール処理
    endif;
//////////////////////////////////////////////////////////////////////

 

どう頑張っても、10のドライバがインストールされない。
条件文は合っているはずなのに。。。

調べたらこういうことらしい
「アプリケーションマニフェストのSupportOSで明示的な宣言をしないと、取得するOSのバージョンがマニフェストに記載された最大値になる」


参考:Win10: OS のバージョン | re-Think things

 

 

InstallShield用のScriptは中でGetVersionEx()呼んでるかな。
バージョン表示処理を入れたら、案の定Windows10環境で"6.2"と表示されていました。

 

今回のインストーラが埋め込むマニフェスト"SetupExe.Highest.manifest
"のcompatibilityセクションを以下に書き換えて対応。

 

マニフェストファイルを探すのに手間取ったので、一応メモ
C:\Program Files (x86)\InstallShield\2013\Support\SetupExe.Highest.manifest)

 

/////////////////////////////////////////////////////////////////////////////////////////

<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<!– Windows 10 –>
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
<!– Windows 8.1 –>
<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
<!– Windows 8 –>
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
<!– Windows 7 –>
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
<!– Windows Vista –>
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
</application>
</compatibility>

/////////////////////////////////////////////////////////////////////////////////////////////////////

 

再度ビルドして試したら無事動きました(*'ω'*)

 

これ前回までは7~8.1までOS分けてなかったからよかったけど、
うっかり分けてたらバグってたのかも。

よかったよかった。

 

電子工作 作るものリスト(ほぼ自分用メモ)

最近納期が重なってなかなかプライベートが充実できなかったです(´・ω・`)

やっと生活が落ち着いてきて、チビと全力で遊んでいたら作らなきゃいけないものが出てきた。

⑴自動TVオフ機
⑵泣き声監視モニター
⑶逃げるお菓子箱


⑴自動TVオフ機
【背景】
アンパンマンに興味を持ったチビが、アニメを流すとTVのゼロ距離視聴をする。
目が悪くなってまう!
離してもダッシュで近づくから体に覚えさせねば!
【要件】
TVに1.5m以上人が近付くとオフ。
離れるとオン。
【色々】
人感センサー。アウトプット:赤外線LEDでTV。
テレビonoff信号解析の為に赤外線レシーバーも。


(2)泣き声監視モニター
【背景】
別の部屋に寝かせて作業してた時に泣かれるとすぐ気付けない。
でも5分くらいで自分で泣き止む時もある。
泣いた時にすぐ分かって監視できるものがあれば……。
【要件】
一定以上の音量で泣いたら映像on
【色々】
音量センサー?カメラ?


(3)逃げるお菓子箱
【背景】
お菓子の美味さを覚えた!
高い所に隠しても台を持ってきたり棒で落としたりして取られる。
お菓子箱が逃げればいいんじゃないか!?
【要件】
逃げる
【色々】
レベル1:後ろに下がる
レベル2:後ろに壁を検知したら横に行く
レベル3:逃げ道を見つけて正面突破する


とりあえずメモ!!!

infファイルのDriverVerエラー

提出するinfのDriverVerの部分の修正し忘れを発見。
バイスマネージャ上で古い情報が表示されるとまずいので編集。

とりあえずChkinfをかけてみると以下のエラーが。。。

DriverVer=26/09/2016,1.3.255.0
; (E22.1.1066) Bad value for Month in DriverVer.
; (E22.1.1067) DriverVer date is in the future

「DriverVer date is in the future」について調べてみたら、
ビルドする際の時間基準がUTCになっているので、+9時間の時差の間を設定してしまうとまずいらしい。
回避方法は「VSでプロジェクトを右クリック-> プロパティ -> Inf2Cat -> General -> Use Local TIme を「はい」にすればよい。」

[参考]
http://blog.livedoor.jp/cielo_cielo/archives/65844807.html
http://monoist.atmarkit.co.jp/mn/articles/1307/26/news003_3.html

なんだ簡単じゃん!!!



・・・・とか思ったのですが、

・Infの作成は直接エディタ
・そもそももう11月なので、1カ月以上昔の日付を設定してる

これUTC関係ないなぁ。



無駄に悩んだ結果、
DriverVerの書き方は
「DriverVer=MM/DD/YYYY,VERSION」
だった。

26月になってたから、「 Bad value for Month」も出てただけでした。

無駄に時間くった!