LoginSignup
0
1

More than 5 years have passed since last update.

Linux/Windows間での鍵フォーマット相違について

Posted at

Linux(PHP)系のプログラムとMicrosoft(.Net)系のプログラムとで暗号化通信を行おうとした際に、鍵のフォーマット相違があり、一筋縄では行かなかったので、その原因と対策をざっくりメモ。

DERとPEM

ざっくり書くと、DERはバイナリデータ、PEMはBase64でエンコードしたデータ。
どちらもASN.1という構造体でデータは構成されている。
cf. http://qiita.com/kunichiko/items/12cbccaadcbf41c72735

PEM形式の秘密鍵の種類

○OpenSSH形式
  OpenSSHのフォーマット。秘密鍵のヘッダーに以下の文字列。
  -----BEGIN RSA PRIVATE KEY-----
○SECSH(ssh.com)形式
  オリジナルのSSHのフォーマット。OpenSSHはssh1.2.12から派生。
  秘密鍵のヘッダーに以下の文字列。
  ---- BEGIN SSH2 ENCRYPTED PRIVATE KEY ----
○PuTTy形式
  PuTTyのフォーマット。秘密鍵のヘッダーに以下の文字列。
  PuTTY-User-Key-File-2: ssh-rsa
引用元 http://d.hatena.ne.jp/machua/20110809/1312899353

Linux系/Microsoft系での鍵フォーマット相違

DERとかPEMは、Linux系で利用されている鍵方式。Microsoft系は直接これらの鍵形式を扱えない(ASN.1ではなくPUBLICKEYBLOBというバイナリ構造体を使ってるっぽい)ので、Linux系/Microsoft系(.netとか)間で暗号化を行う場合は鍵フォーマットをどちらかに揃えてあげる必要がある。

cf. C#と.Net Frameworkを使ってPem形式の秘密鍵や公開鍵をXML形式にして暗号化や署名する方法
http://www.k-karakuri.com/entry/2017/02/03/C%23%E3%81%A8_Net_Framework%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6Pem%E5%BD%A2%E5%BC%8F%E3%81%AE%E7%A7%98%E5%AF%86%E9%8D%B5%E3%82%84%E5%85%AC%E9%96%8B%E9%8D%B5%E3%82%92XML%E5%BD%A2%E5%BC%8F%E3%81%AB%E3%81%97

Windows上で、証明書や秘密鍵をPEM形式に変換してエクスポートする (1/2)
http://www.atmarkit.co.jp/ait/articles/1602/05/news039.html

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1