« 2020年10月 | トップページ | 2020年12月 »

2020年11月

2020年11月30日 (月)

Raspberry PiがWeb監視カメラに

Falcow HD Web Cameraを購入した。USBで接続するHD 30pf のカメラ+マイクだ。Amazonで1900円。
目的ははYoutube Liveを使う方法を検討するため。パソコンにつないでいろいろと試してみた。

YouTube Liveにチャネル登録をする必要がある。これは簡単だけれどもチャネルが有効化するまでに時間がかかる。24時間以内に有効化されると表示されるが、実際にチャネルが使えるようになったのは翌日だった。

ライブ映像はDVRをセットしていれば録画もされる。ネット上の情報を読むと12時間までは録画されるようだ。これは便利だ。

で、Raspberry Piではどうだろうって思って試してみた。

1. HD Web CameraをRaspberry PiのUSBに接続。下に伸びるケーブルがHD Web Camera
Img03603

2. Desktop上のメニューからRaspberry Piの設定を選んで、インターフェースタブでカメラを有効に設定。
3. デスクトップのメニューバーのサウンドを右クリックでAudio InputsからHD Web Cameraを選択。
4. Raspberry Piの再起動。

以上を実行してから studio.youtube.com をアクセスしてライブ配信を開始する。

HD Web Cameraはマジックテープで窓枠に固定。網戸越しに外を撮影。
Img03604

Raspberry PiのChromiumからYouTube Studioでライブ配信中。
Img03605

画像の遅延はおおそ23秒。画像はスムーズとは言い難いが、これはRasberry Pi側の能力の影響も多々あるようだ。別のパソコンで試してみたが、こちらはスムーズな再生が出来ている。パソコンはケーブル、Raspberry PiはWifiって違いはあるけれども、そこが大きく効いているとは思い難い。

すると、Raspberry Piを通してHD Web Camera映像がYouTubeにライブ配信された。
驚いたのはRaspberry PiがHD Web Cameraを簡単に認識しイネーブルしたこと。

Rasberry PiとHD Web Cameraを合計しても9,000円でおつりがくる。それでWeb監視カメラになる。

これはすごい。

配信のアクセス制限は3種類

  • アクセス制限なし
  • リンクを知っている人だけアクセス可能
  • 本人限定

アクセス制限なしは検索を通してライブ配信を見つけるのだと思う。リンクを知っている人だけはURLに明示的にリンクを指定できる人だけ。本人限定は本人でのログオンが必須となる。本人でログオン済みであればリンク指定で視聴できる。

Photo_20201201090801

録画映像に対しては編集もできるので、尺調整もOK。

なんだかこれは使えるように思える。

2020年11月 3日 (火)

Raspi httpsへの道

Rasberry PiをIoTデバイスにみたてて、Restletサーバーにhttpsで通信するよう構成してみた。

https通信は、クライアントからhttps通信リクエストがサーバーに届くと、サーバーは自分の証明書と公開鍵をクライアントに送り返す。クライアントはサーバーの証明書を確認してから、自分が作成した共通鍵をサーバーの公開鍵で暗号化してサーバーに送る。サーバーは暗号化された共通鍵を自分の秘密鍵で複合化する。この時点でクライアントとサーバーはともに同じ共通鍵を持つことができて、以後の通信はその共通鍵によって暗号化される。

まずはkeytoolを使って秘密鍵と公開鍵のキーペアを作成する。

[root@localhost work]# keytool -keystore restletkey.jks -alias restlet -genkey -keyalg RSA -keysize 2048 -sigalg "SHA1withRSA"
Enter keystore password:
Re-enter new password:
What is your first and last name?
[Unknown]: restlet.pathpilot.local
What is the name of your organizational unit?
[Unknown]: pathpilot
What is the name of your organization?
[Unknown]: restlet-server
What is the name of your City or Locality?
[Unknown]: Chuo-ku
What is the name of your State or Province?
[Unknown]: Tokyo
What is the two-letter country code for this unit?
[Unknown]: JP
Is CN=restlet.pathpilot.local, OU=pathpilot, O=restlet-server, L=Chuo-ku, ST=Tokyo, C=JP correct?
[no]: yes

Enter key password for <restlet>
(RETURN if same as keystore password):  <---パスワードはpasswordとした。
Re-enter new password:

Warning:
The JKS keystore uses a proprietary format. It is recommended to migrate to PKCS12 which is an industry standard format using "keytool -importkeystore -srckeystore restletkey.jks -destkeystore restletkey.jks -deststoretype pkcs12".
[root@localhost work]#

JKS keystoreをPKCS12にマイグレーションするようガイドが出たのでその通りに実行。
[root@localhost work]# keytool -importkeystore -srckeystore restletkey.jks -destkeystore restletkey.jks -deststoretype pkcs12
Enter source keystore password:
Entry for alias restlet successfully imported.
Import command completed: 1 entries successfully imported, 0 entries failed or cancelled

Warning:
Migrated "restletkey.jks" to Non JKS/JCEKS. The JKS keystore is backed up as "restletkey.jks.old".
[root@localhost work]#

 

サーバー側のコードはこんな感じ。

   Component restserver = new Component();

   // Add a new HTTP server listening on port 8010.
   Server server = restserver.getServers().add(Protocol.HTTPS, 8010);

   Series<Parameter> parameters = server.getContext().getParameters();
   parameters.add("sslContextFactory","org.restlet.engine.ssl.DefaultSslContextFactory");
   parameters.add("keystorePath","./restletkey.jks");    // restletkey.jksはjavaコードと同じディレクトリに置いた
   parameters.add("keystorePassword","password");
   parameters.add("keystoreType","JKS");
   parameters.add("keyPassword","password");

// Attach the sample application.
   restserver.getDefaultHost().attach("/command", new ServerDispatcher());

// Start the restserver.
   restserver.start();

 

このサーバーをChromeからアクセスしてみた。Chromeは”このサーバーは危ない”って言っている。

Chromewarning2

httpsでアクセスしているけれどもhttpsに取り消し線が付く。

Chromewarning5

その理由は証明書が信頼できるものではないから。自己証明書だから当然なんだけれど。。。。

Chromewarning3 Chromewarning4

FireFoxでもアクセスしてみた。同様に危ないって言っている。

Firefoxwarning1

詳細情報…をクリックして、”危険を承知で続行”をクリック。ちょっとビビる。

Firefoxwarning2

鍵に黄色!アイコンが付くけれども、Chromeよりは穏やかな表現。いずれにせよhttpsでアクセスできているようだ。

Firefoxwarning3

つまりBrowserは、サーバーが何者なのかちゃんと確認できなかったけれども、リクエストを発行したユーザーによってこのサーバーは信頼できるって言っている訳だから、とりあえずサーバーが送ってきた公開鍵を使って共通鍵を暗号化してサーバーに送り返し、https通信を始めたわけだ。

 

問題はRaspberry PiのPythonコード。例外を設定しないとhttpsで通信できない(してくれない)。常套手段はverify=Falseを設定することらしい。で、実行してみた。

response=requests.post("https://192.168.1.62:8010/next", auth=HTTPBasicAuth("user1","pass"), verify=False)

実行はできるけれども、Warningが出力された。

Warning (from warnings module):
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 849
InsecureRequestWarning)
InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
hello, my friend from Next <- サーバーが出力しているテキスト。とりあえずhttpsで受け取っている。 

ちゃんと金を払って認証局のお墨付きをもらわないといけないわけだ。まぁ、そうじゃなきゃ認証局の意味がないけれどね。

 

 

Raspberry Pi でsuになれない話

Raspberry Piでsuになろうとしたらなれない。そもそもrootのパスワードって何なんだろう?

調べてみるとUbuntuやRasberianはDefaultでrootのパスワード設定はないそうだ。理由はセキュリティ上。まぁ、確かにrootは危ない。それでもsuになりたい場合は以下を実行する。

$ sudo passwd root

rootのパスワードを無効化するには以下を実行

$ sudo passwd -l root

-l はロックオプションでアカウントをロックする。これを実行すると”パスワード期限切れ情報を更新しました”と表示される。つまり、強制的にパスワードを期限切れにするってことかなって思う。そもそも passwd root が実行できるってことは root アカウントは存在している訳だから、Defaultでパスワードが無効化(未設定を含む)されてたってことなんだろう、と想像する。

以上

2020年11月 1日 (日)

Microsoft Office2010のインストールでのライセンス認証問題

正規に購入していたMicrosoft Office2010をThinkPadにインストールしたらMicrosoft Office ライセンス認証ウイザードが表示された。

  • ソフトウエアのライセンス認証をインターネット経由で行う
  • ソフトウエアのライセンス認証を電話で行う

インターネット経由を選択したら「指定したプロダクトキーで行ったライセンス認証の回数が、、、、上限に達しているため、、、ライセンス認証を実行できません」と表示された。電話によるライセンス認証を選択せよ、と言われる。

で、画面を戻って、電話で行うを選択すると、国/地域の選択が出てくるか、その下に「電話によるライセンス認証手続きは、この製品ではサポートされていません」と表示される。

Googleってみると、それでも電話をかければ認証されるとあるので、マイクロソフトの認証専用窓口の電話番号をGoogleってみると
0120-801-734
と出てきた。03-6831-3460も使えるらしい。

そこに電話をかけると自動応答によって認証ウイザード画面に表示されているインストールIDの入力を求められた。で、電話のテンキーで入力する。桁数が多いのでちょっと緊張するし、途中で邪魔が入ると面倒な事になりそう。。。。
入力が終わると確認IDを伝えてくるので、それをウイザード画面にタイプする。ここはもっと緊張する。

入力が終わって「次へ」をクリックすると「認証できました」と表示された。

めでたし、めでたし。

 

« 2020年10月 | トップページ | 2020年12月 »