見出し画像

TWSNMP開発日誌:モバイル版でサーバー証明書の情報を取得する実験中

またまた、パリ・サンジェルマンFCは強かった!
今朝は5時半から開発開始です。
昨日からモバイル版のために

  • サーバー証明書の情報を取得する方法

  • TLSの暗号強度を取得する方法

  • RDAPでドメインの情報を取得する方法

を調べていましたがTLSは基本的なライブラリだと取得できなさそうなので諦めました。RDAPは、

で出来そうですがGoogle APIを使うのでやめておくことにしました。
Flutterのアプリだけで完結したいためです。
サーバー証明書の情報は出来そうなので、テストプログラムを作って楽しんでみました。
使ったのは、

です。接続すればpeerCertificateにサーバー証明書の情報が入っています。
これだけで、発行者や対象、有効期限ぐらいは取得できます。
DNSの検索で見つけた

のパッケージを使うとサーバー証明書の詳しい情報が取得できます。

  // TLSで接続  
     final socket = await SecureSocket.connect(
      'lhx98.linkclub.jp',
      443,
      keyLog: (line) => print(line),
      onBadCertificate: (certificate) {
        print("bad ${certificate.issuer}");
        return true;
      },
    );
    print(socket.peerCertificate?.subject);
    print(socket.peerCertificate?.issuer);
    print(socket.peerCertificate?.startValidity);
    print(socket.peerCertificate?.endValidity);
    print(socket.peerCertificate?.pem);
    print(socket.selectedProtocol);
    if (socket.peerCertificate != null) {
          // サーバー証明書の詳しいい情報を取得
      var data = X509Utils.x509CertificateFromPem(socket.peerCertificate!.pem);
      print(data.toJson());
    }

{version: 1, serialNumber: 14825629812276087038, signatureAlgorithm: 1.2.840.113549.1.1.11, issuer: {2.5.4.6: TW, 2.5.4.7: Taipei, 2.5.4.10: Synology Inc., 2.5.4.3: Synology Inc. CA}, validity: {notBefore: 2019-11-20T05:52:58.000Z, notAfter: 2039-08-07T05:52:58.000Z}, subject: {2.5.4.6: TW, 2.5.4.7: Taipei, 2.5.4.10: Synology Inc., 2.5.4.3: synology.com}, sha1Thumbprint: F33EDF68F70B4D6F118757A042F7489C719DBD31, sha256Thumbprint: F5DCE631DB38E439EF8090DA88C0A7C196C16E066526A3EF7F91EBC900B11E7C, md5Thumbprint: 439EE91A2D8EB1712571FA47679E4B9C, publicKeyData: {algorithm: 1.2.840.113549.1.1.1, algorithmReadableName: rsaEncryption, length: 2048, sha1Thumbprint: D280AB9F9D5D2B82FE10BD03C7F15B774FE87987, sha256Thumbprint: 5F32725A78A7AF33548F1D6A10A31D3F0DCED9748BB3428EF810850E94B4FA5C, bytes: 3082010A0282010100CEE76644F54CFC93BB0F35A685A74DAABEF36544BACB6F8FD45A8AD993442CAE69B5A350244B02939093E4D6355935CD774760A4BAAC81A2B91AB087DE9E8F1E2B24916A830A52DB191BA34FC24D4CC2FB2061335A9483031212B15<…>

サーバー証明書の確認機能を作れそうです。
でも、今朝は時間切れです。

明日に続く

開発のための諸経費(機材、Appleの開発者、サーバー運用)に利用します。 ソフトウェアのマニュアルをnoteの記事で提供しています。 サポートによりnoteの運営にも貢献できるのでよろしくお願います。