信頼できないネットワークを介してクライアントとサーバーを接続する必要があります。TLS (crypto/tls)の使用を検討しましたが、私が理解していることから、最初に create a crypto/x509.Certificateを作成する必要があります。しかし、 x509.CreateCertificate() 関数に渡す必要があるすべてのパラメーターに圧倒されます。次のすべてのフィールドが必要であると書かれています。
SerialNumber、Subject、NotBefore、NotAfter、KeyUsage、BasicConstraintsValid、IsCA、MaxPathLen、SubjectKeyId、DNSNames、PermittedDNSDomainsCritical、PermittedDNSDomains。
私は両方のエンドポイントを完全に制御できるので、有効期限や無効化のサポート/パラメーターは必要ないと思います (クライアントとサーバーの両方でいつでもキーを変更できます) - したがって、おそらくNotBeforeとNotAfter (?またはとにかくそれらを設定する必要がありますか?)。脆弱性を回避するには、他のすべてのフィールドに何を入力する必要がありますか? また、その理由は何ですか? また、両方の認証方法 (クライアントからサーバーへ、およびサーバーからクライアントへ) に同じ秘密鍵/公開鍵のペアを使用できますか? それとも 2 つのペアを使用する必要がありますか?
または、TLS よりも簡単に使用できるものはありますか? ただし、双方向認証が必要であることに注意してください。
編集:
受け入れられた回答からの提案に加えて、 generate_cert.goからのキー生成コードに基づいて単純なライブラリを作成しました-参照: