さくらのレンタルサーバ HTTPS化(無料SSL)

・無料SSL有効化

サーバコントロールパネルにログイン。

左側メニュー>ドメイン/SSL>ドメイン/SSL
をクリック。

対象ドメインにある
SSL

をクリック。

登録設定を始めるSSL証明書の種類を選択
をクリック。

Let’s Encrypt (無料SSL)
を選択する。

SNI SSL(ネームベース)
がチェックされ、
IPベースの証明書は新規でのご提供を終了いたしました、
とあるので、そのままでOK。

しばらくすれば完了。

***

・転送設定

SSL有効化が完了してから作業。

ドキュメントルートに.htaccessを設置するという方法もあるが、先程と同じく、
サーバコントロールパネルにログイン。

左側メニュー>ドメイン/SSL>ドメイン/SSL
をクリック。

対象ドメインにある
設定

をクリック。

HTTPSに転送する
にチェック。

VBA ListBox参考

ListBoxの使い方を忘れてしまうので、さっき作ったものをメモ代わり。

 

WatchGuard VPN ClientからOpenVPN GUIに変更

ときどき利用しているWatchGuard VPN Clientの調子が悪く、接続プロセス中に止ってしまうことが多くなった。

情報も少なく原因追求もできなかったので、試しにOpenVPNのクライアントをそのまま使ってみようかと考えた。
https://www.openvpn.jp/download/
から
OpenVPN-x.x.x-I601-amd64.msi
をダウンロード+インストールし、
C:\Users\xxx\AppData\Roaming\WatchGuard\Mobile VPN
の中にある、
ca.crt
client.crt
client.ovpn
client.pem
の4つのファイルを、そのまま
C:\Program Files\OpenVPN\config
の中にコピーしたらOpenVPN GUIで接続できたので、しばらく使ってみる。

***

追記:数ヶ月利用してみた結果、OpenVPNの方が安定しているような感じで、一度も問題は発生しなかった。

一応、WatchGuardの方は、
https://software.watchguard.com/SoftwareHome
からFirebox and XTMの中で適当な製品を開き、
Mobile VPN with SSL xx.x for Windows
の最新版をダウンロードして入れたら動くようにはなった。

***

追記:1年以上OpenVPNを利用したが特に問題なし。

少し気になったのが、VPNを有効にすると、ネット接続が全てVPN経由になってしまうこと。時々切断を忘れることもあるので、特定のIPアドレスの範囲だけVPN経由に変更。

NICのメトリックで対応できるかと思ったけど、接続を実行すると、
ネットワーク宛先 / ネットマスク / ゲートウェイ / インターフェイス
0.0.0.0 / 128.0.0.0 / 192.168.113.1 / 192.168.113.5
128.0.0.0 / 128.0.0.0 / 192.168.113.1 / 192.168.113.5
(192.168.113.5がVPNのNIC)
というルーティングが追加されてしまうようでダメだった。

ちなみに、もともと存在するデフォルトルートは、
0.0.0.0 / 0.0.0.0 / 192.168.11.1 / 192.168.11.18
(192.168.11.18が物理NIC)

OpenVPNの情報が少なく適当ではあるけど、
C:\Program Files\OpenVPN\config\client.ovpn
に、
route-nopull
route 192.168.0.0 255.255.248.0
と追加した。
(192.168.0.1~192.168.7.254までVPN経由)

client.ovpnの名前を変更して、*.ovpnを複数作成すると、タスクトレイのアイコンから選択して接続できる。

***

クライアントを2.5.8>2.6.0に上げたらエラーが出たのでエラーの内容から、client.ovpnに、
data-ciphers AES-128-CBC
と追加した。

VBA 起動部分テンプレート

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

右クリックメニューの階層化。高速化等々。

 

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