質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
SSL

SSL(Secure Sockets Layer)とは、暗号化されたプロトコルで、インターネット上での通信セキュリティを提供しています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

3回答

1307閲覧

未解決 PHPでSSLの秘密鍵ファイルを作成したい

nasu

総合スコア81

SSL

SSL(Secure Sockets Layer)とは、暗号化されたプロトコルで、インターネット上での通信セキュリティを提供しています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2016/07/15 09:13

編集2016/07/19 14:03

間違えてベストアンサーボタンをクリックしてしまいました。まだ未解決です。

以下の配列の各要素は16進数の値です。
SSL:1024bitの秘密鍵ファイル(.pem形式)を、以下の配列を元に作成したいのですがどう変換すればよいか悩んでいますのでお力を貸してください。
※値は適当です。

単純に配列の要素を結合して、base64エンコードをすると
3DC37B... という「文字列」をエンコードすることになります。
そこで「0x3D」「0xC3」... という状態のままでbase64エンコードを行えば
期待の結果が得られると考えたのですが、実装方法がわかりません・・・

PHP

1$priArray = [ 2 '3D','C3','7B','95','3','3D','6E','65','4A','7', 3 'C1','38','5A','ED','80','F8','13','B3','84','4A', 4 '15','3C','14','2A','85','96','6B','29','DD','77', 5 'D5','B2','72','FF','B9','D','43','C8','7F','6C', 6 'E0','5D','2C','60','EB','E5','14','7','8B','B7', 7 '7F','5C','CB','DD','CD','25','82','D3','D5','19', 8 'C','9','3D','35','A7','EF','27','CE','E3','25', 9 '36','7','9C','26','7B','45','5F','27','25','F2', 10 'DA','3A','2E','64','B2','2D','5A','C2','90','EC', 11 '8B','EC','48','D9','80','9D','17','5E','70','20', 12 '0','A0','86','BF','2A','45','C5','D6','88','B6', 13 'B2','41','D','16','9C','D6','18','AB','1B','A0', 14 '49','D8','AC','A3','48','2E','E9','21' 15]; 16

上記配列を元に、以下のようなbase64で変換した秘密鍵を
PHPで作成したいです。
(こちらの値も適当に変えてあります)

-----BEGIN RSA PRIVATE KEY-----
VIIgfsni7fiBAAKBgQDzAwzzHnMewjt3LDwhwRnQGGTt+vQrVTFMpR6K9OfGalmF
1ljtMhcl/PKeCckvFhK/LgogKLzcrFoF3xWXMM/k+KWU9irWfODXQ/XieC3l9YkT
KeQfHehHgD7q81Lry2oT/dcjwogFMzzIj4QYoH40X5DDNG89IlfOsdIGRwIDAQAB
AoGBAIQt8Zo/wsBFR9EPh3mYrfCphCSJrsvvH8yft5g/k94xtJXQfb0CJAaIi1zH
VDQwAHUTHYlNgoZxgiDJwoGVEQlHR+vl58rLOApP7LSNPgJlx2B5UreGzatalbvQ
v6nQPHJ2Ql/w7su5ALxgfqiqp4aeO6I0O1uXyFXnTkavPsLJAkEA/p5nTUBjwhjb
ecMn3T62OagIaTiiM+lSWTi5N8xDbS8AoRr06n0Y1hZxfSPqhl6MKkhQWnWMTdmB
HzJlLExvPQJBAPRUhz5lcEOrcizw6X41nuCY6LXZz4YEqooP81o2JzSDXtjzYDs9
ZeS8Dc2HvBCZh0dHA/i20WOHmKN+ekPhI9MCQQD1KZKv6ILlfke9mzKELoEJTQkk
P3q23z8CV8LHvi9iLvK9LRaLvf4vDZci9nU4AkuV3uE36J06zGYuoriWCdbFAkAs
H1OpDfJ/Fefxe7P+yboePx7PMD1Mq20Mr6K3qM3dqtenABRhvk23R8qKUjfBG6iV
U5rBAGrBuYv0AnQb6/1nAkAwcS0a7eL8VDgFQvmBLk8ktghZVacZmLtuWyUzgld0
ASTvTsQ2ZkxsVnoyeWzdO89aea0y9E4rYqIL+xmfGLVN
-----END RSA PRIVATE KEY-----

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

自己解決

結局、PHP標準の関数は使えないというところまで至り、base64encodeされた文字列を元に、独自で暗号化•復号できるものを作成しました。(PHPだと桁数が厳しかったのでpythonでしたが・・・)

投稿2016/09/25 02:20

nasu

総合スコア81

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

hex2bin とか。

投稿2016/07/15 09:17

takasima20

総合スコア7458

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nasu

2016/07/19 07:48

私の理解が足りないのであれば、申し訳ないのですが・・・ $data = hex2bin($priArray); // $dataを.pemファイルに出力 こういうことでしょうか? これだけで.pem形式の秘密鍵としては使えるのでしょうか?
takasima20

2016/07/19 10:57

16進表現の文字列をバイナリ形式に変換するなら hex2bin関数が使えるという話をいたしました。 この関数の仕様を確認すると… http://php.net/manual/ja/function.hex2bin.php 入力は文字列となっており、配列は受け付けません。 申し訳ありませんが、秘密鍵云々に関しては分かりません。
nasu

2016/07/19 13:51

コメントありがとうございます。 base64_encode(hex2bin($str)) これくらいで出来るんだろうと勝手に思ってましたが、pem形式だと他にも諸々情報が含まれているようなので、このままでは足りない(だろう)というところまで来ました。 opensslの処理をプログラムで実行するのが初めてでしたので、無知な質問をしてしまったようです。
guest

0

openssl_pkey_new — 新規に秘密鍵を生成する
http://php.net/manual/ja/function.openssl-pkey-new.php
このへんの関数が使えそうですね。

投稿2016/07/19 12:35

yodel

総合スコア508

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nasu

2016/07/19 14:00

回答ありがとうございます。 スミマセン。間違えてベストアンサーをクリックしてしまいました。 まだ解決しておりません。 大変失礼しました... 今回は、新規に鍵を作るのではなく、既存の鍵を元にpem形式のファイルを作成したいという話です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問