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

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

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

OpenSSLはSSL/TLSのプロトコルと一般的な暗号のライブラリを導入するオープンソースのソフトウェアのツールキットです。

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

暗号化

ネットワークを通じてデジタルデータをやり取りする際に、第三者に解読されることのないよう、アルゴリズムを用いてデータを変換すること。

Q&A

0回答

1964閲覧

OpenSSLで署名したデータのPOST

M_M

総合スコア6

OpenSSL

OpenSSLはSSL/TLSのプロトコルと一般的な暗号のライブラリを導入するオープンソースのソフトウェアのツールキットです。

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

暗号化

ネットワークを通じてデジタルデータをやり取りする際に、第三者に解読されることのないよう、アルゴリズムを用いてデータを変換すること。

0グッド

0クリップ

投稿2017/12/02 18:03

###前提・実現したいこと
OpenSSLで作成した秘密鍵で署名したデータのファイルをpython2で読み込んでそれをOpenSSLで作成した公開鍵、署名する前のデータとともにurllib、urllib2でAPIサーバーにPOSTする。
APIサーバーはFlaskを使用して、request.formで取得しています。POSTされた署名をOpenSSLで送られてきた元データと検証したいです。

###該当のソースコード
python2.7

import subprocess import urllib.request subprocess.call('openssl genrsa 2048 > prikey.pem', shell=True) subprocess.call('openssl rsa -in prikey.pem -pubout -out pubkey.pem', shell=True) data = 'abc' with open('data.txt', 'w') as f: f.write(data) subprocess.call('openssl dgst -sign prikey.pem hash_token.txt > sign.sig', shell=True) with open('sign.sig', 'r') as f: sign = f.read() url = "http://xxxxxx/xxx" params = {'token': token, 'sign': sign, 'pubkey':pubkey} params = urllib.urlencode(params) req = urllib2.Request(url) req.add_data(params)

python3.x

from flask import Flask, request data = request.form['data'] pubkey = request.form['pubkey'] sig = request.form['sign'] with open('data.txt', 'w') as f: f.write(data) with open('pubkey.pem', 'w') as f: f.write(pubkey) with open('sign.sig', 'w') as f: f.write(sig)

###試したこと
上記を実行して、作成したsign.sigとdata.txtをOpenSSLの検証コマンドで検証したところOKにすることが出来ません。
仮に署名データをファイルごと移した場合はOKになるので恐らく署名データを送る際のエンコードの問題なのではないかと思っています。

###補足情報(言語/FW/ツール等のバージョンなど)
request.formでの取得でなくても大丈夫です。
とにかく、署名データをPOSTしてそのデータを検証し、一致したいと思っています。

よろしくお願いします。

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問