読者です 読者をやめる 読者になる 読者になる

流れるまにまに。

のんびり人の日々のめも。

ZenBook3買ったよ!!

(*´ω`*)…(なんか、外から入れるビルドマシン欲しいなぁ)

 

と思ったので、それなりのスペックのノートPCを買うことに。

Azureとか使えばいいじゃん、という話かもしれませんが、

ちょうどメインノートのSurfacePro2にも限界を感じてきたのでついでに。

そのうちGPDとか買うから、外からはそれでいこう。そうだ、そうしよう。

 

と、いうことで、買ってきましたZenBook3!!

f:id:piyomani:20170521210101j:plain

Corei5-7200U!

メモリ8GB!!

SSD256GB!!!

薄くてかわいい本体に、専用スリーブとミニドックまでついで110k!

すごーい\(*´ω`*)/!!

 

よし!とりあえずVisualStudio2017フルで入れちゃうぞー!

f:id:piyomani:20170521213748j:plain

50.14GB

さすがのフルだ...。

 

今日はVS2017のインストールで終わりそう。

そして、セキュリティソフト入れようと思ったら全部PC名適当でどれを破棄していいのか分からない。

 

ルーターいじったりはまた明日かな?

【解体】子ども用乗用ショベルカーを修理してみた

ぷらっと家族でハードオフに行ってきました。
のりものシリーズにハマり出しているチビは真っ先におもちゃコーナーへ。
ハードオフのおもちゃコーナーって色々あって面白いですよね。

そんな中で見つけて即買いしちゃいました。
これ!!!

f:id:piyomani:20170514212014j:plain


コマツのショベルカー!!!!
お値段950円!!!!

ヘルメット付き(プラスチック製)!!!笑

乗用マイクロショベルコマツPC01

乗用マイクロショベルコマツPC01

 

 
元値は諭吉さん超えるくらいらしいので、とってもお買い得!!

 

何故そんなに安いのか。
値札の上にこんなことが書いてありました
・アーム上がりません
・音出ません
つまりはジャンクです。

望むところです!!

 

ってことで修理。

 

●まず状態を見ます

・アームを動かす

 →動きが安定しないけど下方向には動く。上へ戻らない。レバーがすこすこしてる。

・サウンドレバーを動かす

 →鳴らない。

・本体を持ち上げる

 →なんだかカラカラ鳴るwwwww

 

とりあえず一方向ですがアームは動いたので解体していけば切り分けは簡単そう。

カラカラ鳴るのは、何が取れちゃってるんだろうwww

 

●アーム部解体

とりあえずアーム部を外す!

f:id:piyomani:20170514215320j:plain

軽く見た感じ、断線等は見当たらなかったです。可動部も上下にしっかり動いていたので、ギアが外れてるとかではなさそう。てことでギア部のカバーを外す。

f:id:piyomani:20170514213450j:plain

中を開けたら思ったよりいっぱいギアが噛み合ってました。

で、一番大きいギアの軸を支える穴が割れてました。

動きが安定しないのはこいつが原因かな?

↓ ↓ 修理! ↓ ↓

 f:id:piyomani:20170514214727j:plain

 破片が体内に残ってなかったので、そこら辺に落ちてた何かのプラスチックの蓋を代用。

長い軸をしっかり包み込んで、左右にぶれなくなりました!!やったー!

 

 

 ●本体部解体

次は、何故かカラカラ鳴る本体部の解体!

開けてみると、出てくる出てくる色んな破片wwww

f:id:piyomani:20170514220739j:plain

 画像は他のねじも混ざってますが、

プラスチック片×3。バネ×1。ねじ×1。

これらの出所がどこなのかを探します。

 

キャタピラ部+電池部+椅子部に問題は無し。

ということで動力部です。

f:id:piyomani:20170514223749j:plain

 音が出ないスピーカーは、おそらく断線だと思うのですが、音を出すことを覚えるとやかましくなるので修理しなくてもいいかな、という結論にw

 

 

●基板を外し、レバー裏へ。

 

 プラ片とばねの出所発見!!

ばね裏が接地点になってたのですが、ばねを支えるプラが割れて、上手くアームを上げる方に接地出来なかったようです。

元の持ち主の子がいっぱいレバガチャしたのかな?

f:id:piyomani:20170514225454j:plain

接着して動作確認して完了!!!

 

ねじの出所は直したらどこのだったのか分からなくなってしまいましたが、無事直りました!!

修理完了!!!!!!!

 

次の日の朝、チビは喜んで乗って遊んでました(*´ω`*)

【RaspberryPi】再び!RaspberryPiにwindows10 IoT Coreを入れる!

 

piyomanilife.hatenablog.com

 

こんな記事をちょっと前に書きましたが、

Lチカと3軸加速度センサをちょっといじって放置してました。

ごめんねラズパイさん。。。

 

折角のGWということで、久々に遊ぼうと思ったら、

BSODで起動しない!!!!!

ダメじゃん!!!!!!!

 

となったので、再度SDにWin10IoTをインストールすることに。

(BSODの治るの確認なのでInsiderPreviewじゃなくて、15063入れてます)

 

手順はこれだけ!

1.IoT Dashboardを起動する

2.[新しいデバイスのセットアップ]を選択する

3.microSDを挿す

4.設定をして[ダウンロードとインストール]をクリック

5.書き終わったmicroSDをラズパイにインして電源オン!!!

 

f:id:piyomani:20170508235827p:plain

 

以前は使い勝手が微妙だったIoT Dashboardがとっても使いやすくなってました( *´ω`)

 

 

 

 

*余談*

OSのアップデートとかさぼってたからBSODになったんだ!Σ

とか思ってOS焼き直しましたが、

インターネットに接続すると Windows Update を通じて自動的に OS が更新されます。」

とか公式に書いてあった。すごい便利な世の中だなぁ。

ビジネス向けの Windows 10 IoT

 

【C++】HTTP通信で大きいサイズのファイルを分割して送る

HTTP通信で大きいサイズのファイルを分割してPOSTする方法。

普通にPOSTする分には問題なかったのだけど、

送信したいファイルの内容を一度メモリに展開してから送る!ってやってたら、

700MBくらいですっ飛んだので、修正。

巨大サイズのファイルを扱う時っていつも注意が必要ですね。

 

WinHttpSendRequestで送るサイズを先に指定すれば、WinHttpWriteDataで分割して送信できるんだなぁ。

でも、サイズ指定部分がbyte数をDWORD型なので、

4GB(4,294,967,295byte)が限界!!

GB超えるファイルをHttpで送らないでと言いたい...(´・ω・`)

 

APIも色んな手順で使えるんだと知りました。ここの図が凄い分かり易かった!

WinHTTP Sessions Overview (Windows)

 

サンプルコードは以下。

CString系を多用しているのは好みと技術力の問題です。

エラー処理とか、解放漏れとかは無視して下さい。

 

 

基本的にはここを参考にさせていただきました。

http://eternalwindows.jp/network/winhttp/winhttp02.html

 

【Azure】AzureRMS APIを使用した暗号アプリを作成する

こっからの続き。

piyomanilife.hatenablog.com

AzureRMS環境構築後、APIを使用してRMSのアプリを作成するメモです。

適当に暗号化するアプリを作るよ!! 

 

ちなみに、Azure RMSとか新し目の技術を使っておきながら、
作るアプリケーションはC++MFCです。
\(^o^)/<化石かよ!!!  でも好き!!!>\(^o^)/

 

目次兼手順は以下

 

--------

1.AzureADにアプリケーションを登録

①左メニューから[ACTIVE DIRECTORY]を選択

②対象のActiveDirectoryを選択

③上部メニューから[アプリケーション]を選択

④[+追加]を選択

f:id:piyomani:20170314001304p:plain

⑤出てきたダイアログで適当にアプリ情報を登録

詳細はここら辺を参照↓

ADAL 認証用のアプリの構成 | Microsoft Docs

 

 

 私は「TestRMS」という名前のネイティブクライアントアプリとして登録。

f:id:piyomani:20170315233511p:plain

2.暗号化に必要な情報を取得

基本は以下のページの手順に則り、実施↓。

クラウド ベース RMS でサービス アプリケーション使用を有効化する方法 | Microsoft Docs

 

Microsoft Online サインイン アシスタントをインストール

https://www.microsoft.com/ja-jp/download/details.aspx?id=41950

②Azure AD PowerShell モジュールをインストール

https://www.microsoft.com/ja-jp/download/details.aspx?id=41950

③Azure RMS PowerShell モジュールをインストール

https://docs.microsoft.com/ja-jp/information-protection/deploy-use/install-powershell

④AzureADのPowerShellを起動して、以下を実行

Import-Module MSOnline

Connect-MsolService (管理者の資格情報を入力)

New-MsolServicePrincipal (アプリ名を聞かれるので、1で登録した名前を入力)

出てきた情報をメモ。

⑤AzureADのPowerShellで引き続き、以下を実行

Import-Module aadrm

Connect-AadrmService (管理者の資格情報を入力)

Get-AadrmConfiguration

出てきた情報をメモ。

④⑤を通すとこんな感じ

PS C:WINDOWSsystem32> Import-Module MSOnline
PS C:WINDOWSsystem32> Connect-MsolService
PS C:WINDOWSsystem32> New-MsolServicePrincipal

コマンド パイプライン位置 1 のコマンドレット New-MsolServicePrincipal
次のパラメーターに値を指定してください:
DisplayName: TestRMS
The following symmetric key was created as one was not supplied X5Vj+N9bk38bwwWxGpNeHi6r32oiKxduEyrTAqGidQI=
DisplayName : TestRMS

ServicePrincipalNames : {a7571801-27e2-4863-9c5f-6485c7c20505}
ObjectId : a992522e-2109-417c-a7c0-90d2dbb5beb8
AppPrincipalId : a7371501-27c2-4863-9c3f-6485c7d20503 

TrustedForDelegation : False
AccountEnabled : True
Addresses : {}
KeyType : Symmetric
KeyId : aaf125f4-c25f-4823-bcf2-238de9ca378b
StartDate : 2017/03/11 14:46:53
EndDate : 2018/03/11 13:46:53
Usage : Verify

PS C:WINDOWSsystem32> Import-Module aadrm
PS C:WINDOWSsystem32> Connect-AadrmService
A connection to the Microsoft Azure AD Rights Management (AADRM) service was opened.
PS C:WINDOWSsystem32> Get-AadrmConfiguration

BPOSId : 6e0da1ab-d715-48c9-91cc-1ae9952039fe
RightsManagementServiceId : f5c1aaa4-6d0c-42cc-a24d-6e8006b8a323
LicensingIntranetDistributionPointUrl : https://f5c1abc4-600c-42cc-a24d-6e8006b3a323.rms.ap.aadrm.com/_wmcs/licensing
LicensingExtranetDistributionPointUrl : https://f5c1abc4-600c-42cc-a24d-6e8006b3a323.rms.ap.aadrm.com/_wmcs/licensing
CertificationIntranetDistributionPointUrl : https://f5c1abc4-600c-42cc-a24d-6e8006b3a323.rms.ap.aadrm.com/_wmcs/certification
CertificationExtranetDistributionPointUrl : https://f5c1abc4-600c-42cc-a24d-6e8006b3a323.rms.ap.aadrm.com/_wmcs/certification
AdminConnectionUrl : https://admin.ap.aadrm.com/admin/admin.svc/Tenants/f5c1abc4-600c-42cc-a24d-6e8006b3a32c
AdminV2ConnectionUrl : https://admin.ap.aadrm.com/adminV2/c-42cc-a24d-6e8006b3a32c
OnPremiseDomainName :
Keys : {814d5d6d-3fd7-4b61-9b23-635b36782cff}
CurrentLicensorCertificateGuid : 814d5d6d-3fd8-4b61-9b23-635b49c82cff Templates : {8209c59f-21f5-42ab-b8f1-bf825c4cf896, 473a0ba4-36b7-47a6-9d0c-fe3933abd0c4}
FunctionalState : Enabled
SuperUsersEnabled : Disabled
SuperUsers : {}
AdminRoleMembers : {}
KeyRolloverCount : 0
ProvisioningDate : 2017/03/11 14:19:46
IPCv3ServiceFunctionalState : Enabled
DevicePlatformState : {Windows -> True, WindowsStore -> True, WindowsPhone -> True, Mac -> True...}
FciEnabledForConnectorAuthorization : True
DocumentTrackingFeatureState : Enabled

 

3.開発環境にSDKのインストール

RMS SDK(2.1)のダウンロード
https://www.microsoft.com/en-us/download/confirmation.aspx?id=38397

からAzureRMSSDKをインストール


4.プロジェクトの作成と、リンカーやら設定

①VSでプロジェクト作成

私は安定の化石C++MFCだよ!

②プロジェクトにSDKのリンカとか設定

プロジェクトのプロパティを開いて設定追加。ここに書いてある通りに↓
(参考:https://docs.microsoft.com/ja-jp/information-protection/develop/how-to-configure-a-visual-studio-project-to-use-the-ad-rms-sdk-2-0)

☆[構成プロパティ] →[VC++ ディレクトリ] → [インクルード ディレクトリ]に“$(MSIPCSDKDIR)inc”を追加

 ☆[構成プロパティ] →[VC++ ディレクトリ] →[ライブラリ ディレクトリ] に“$(MSIPCSDKDIR)lib”を追加。

(x32の場合は“$(MSIPCSDKDIR)lib”)を追加。

☆[リンカー] →[入力] →[追加の依存ファイル]に“Msipc.lib;Msipc_s.lib”を追加。

☆[リンカー] →[入力] → [DLL の遅延読み込み]に“Msipc.dll” を追加。


5.プログラムかきかき

後は適当に用意されたAPIを使ってプログラムするだけ!

基本的に必要になる情報は手順2の最後に書いた実行結果の緑文字の部分。

作ったアプリの一部だけサンプルとして↓

 

初期化して、テンプレート取ってきて、ファイル暗号にかけてるだけ!

 

6.できたかな!

アプリを起動して、ファイル指定!暗号化!!!

f:id:piyomani:20170318040908p:plain

暗号化されて、pファイルになったよ!!!

中身も暗号化されてる!!

ちなみに、Office系ファイルは暗号化しても拡張子が変わらないので、見た目だけだとよく分からないよ\(^o^)/

 

中見て<BODY type="Microsoft Rights Label" version="3.0">ってタグが入ってたらRMSで暗号化されたファイルみたいです。

 

おしまい!

【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