PHP お問い合わせフォーム

 

C# Reflection DataTableをListに代入

DataGridViewのDataSourceにList<Model>を渡すとき、DataTableからList<Model>に代入をReflectionで作ってみる。普段はそのまま名前を書いてしまうことも多い。

 

SSL/TLS メモ

SSL/TLSは分かりづらいのでメモ

●SSLとTLS
Secure Sockets Layer
Transport Layer Security

SSLは既に廃止、プロトコルとしてはTLSのみ。呼称としてのみSSL。

●公開鍵暗号
公開鍵は暗号化
秘密鍵は復号化、公開鍵の生成。
※秘密鍵で暗号化というのは考えない。

●バージョン

Chromeデベロッパーツール>セキュリティ

●SSL/TLS

・サーバーは認証局に証明書を発行してもらう
CSRを認証局でハッシュ化し、それを署名生成鍵(秘密鍵)で暗号化。
CSR+暗号化されたハッシュ=署名済証明書

・サーバーに署名済証明書をインストール

※以下ハンドシェイク(TLSのバージョンによって違う)

・共通鍵生成
お互い、非公開パラメータと公開パラメータを生成し、公開パラメータを相手に送る。

・サーバーはクライアントに署名済証明書(中間CA証明書なども)を送付

・クライアントは署名済証明書に改ざんがないか検証
署名済証明書を検証鍵(公開鍵)で復号化し、CSRから計算したハッシュと、
復号化したハッシュを比較する。
※検証鍵はOS/ブラウザにインストールされている

GCP Cloud SQL(MySQL) 使い方

先日VPS(Indigo)のSQLite→MySQLの実験を行ってみたが、GCPでもやってみることにした。

初期設定

Cloud SQL 無料トライアルを実行する。
(既にクレジット等の情報は登録済みなのでそのまま完了)

コンソールにログイン>左側メニューのSQLを選択。
プロジェクト(すでにMyFirstProjectが存在している)をクリック。
インスタンスを作成をクリック。
MySQLをクリック。

インスタンスID、rootパスワードを入力する。
無料トライアルだが、実際運用を始めれば安く利用したいので、
asia-northeast1(東京)/db-f1-micro
SSD/10GB
自動バックアップしない
を選択する。インスタンス生成には少し時間がかかる。

・インスタンス作成後

コンソールにログイン>左側メニューのSQLを選択。
作成したインスタンスを選択。

左側メニューの接続を選択。
SSL接続のみ許可をクリック。
クライアント証明書を作成をクリックし、一意のIDを追加し作成。

・サーバー証明書:server-ca.pem
・クライアントの公開鍵証明書:client-cert.pem
・クライアント秘密鍵:client-key.pem
という3つのファイルをダウンロードする。

同じく左側メニューの接続から、ネットワークを追加をクリック。
ネットワークの項目:0.0.0.0/0
を追加し完了>保存を実行。

左側メニューの概要を選択、パブリックIPアドレスを確認。

MySQL Wokbenchから接続

Standard TCP/IPを選択。

・Parametersタブ
Hostname:パブリックIPアドレス
Port:3306
Username:DBユーザー名(root、app_user等)
パスワード:DBパスワード

・SSLタブ
Use SSL:Require and Verify CA
SSL Key File, SSL CERT File, SSL CA File
それぞれ、ダウンロードしたファイルを選択。
※登録後ファイルのパス変更(移動)できないので注意。

とりあえずこれでつながる。

C#(MySqlConnection)から接続

.Netではpemが使えないため、
(https://dev.mysql.com/doc/connector-net/en/connector-net-tutorials-ssl-pfx.html)
opensslのある環境上で(今回はVPSで)実行

openssl pkcs12 -export -inkey client-key.pem -in client-cert.pem -out client.pfx
pfxファイルを作成する。(client部は任意の名前)

pfxパスワードを聞かれるが、空白も可能で空白の場合、接続文字列のCertificatePasswordは不要となる。

・ワンライナーで設定する場合
pass=$(head /dev/urandom | tr -dc a-km-np-z1-9 | head -c 13);openssl pkcs12 -export -inkey client-key.pem -in client-cert.pem -out client.pfx -passout pass:${pass};echo $pass;

・接続文字列

MySQLのConnectorはNuGetでもインストーラーでもいける。インストーラなら参照設定から登録。

VBAからの接続

MySQLのODBCドライバをインストールする。32/64bitはOSではなくOfficeに合わせる ‘(ファイル>アカウント>Excelバージョン情報)

https://dev.mysql.com/downloads/connector/odbc/
mysql-connector-odbc-xxx-winx64(32).msi

MySQLにインポート

・データベース作成

コンソール>SQL>インスタンス選択>データベース>データベースの作成をクリック。

文字セット:utf8
照合:デフォルトの照合

・ファイルアップロード(Storage)

コンソール>Storage>ブラウザ>バケットを作成をクリック。

バケットに一意の名前をつける。

ロケーションタイプ:Region
ロケーション:asia-northeast1(東京)
ストレージクラス:Standard
アクセス制御:均一

コンソール>Storage>ブラウザ>バケットを選択>ファイルをアップロードをクリック。

・インポート

コンソール>SQL>インスタンス選択>概要>インポートをクリック。

ソースにファイルを指定:アップロードしたファイル選択
ファイル形式:SQL
インポート先:作成したデータベース名

VPSのMySQLへはSQLiteで作成したファイルを直接インポートできたが、GCPではできなかったため、とりあえず今回はSQLite>MySQL(VPS)>MySQL(GCP)という流れになった。

Python 組み込みサーバー

 

・組み込みサーバーでCGIを処理

Win10設定>アプリ>アプリと実行エイリアス
python.exeをオフにする

sysdm.cpl>詳細設定>環境変数
からパスを通す
C:\Users\mail\AppData\Local\Programs\Python

バッチファイルを作成

バッチと同じ階層にpython.pyを作成

バッチと同じ階層にindex.htmlを作成

binファルダ以下にtest.pyを作成

 

Python XML・Json

 

Python データベース基本

 

Python ファイル関連

 

Python 基本文法

新しい言語を少し触ってみようかなということでPythonをはじめた。

VBA 並び替え(Sort)

いつも忘れてしまうので。

ダイアログを表示させ、実行は手動にする場合。