Qiitaの記事を参考に、SSL証明書を取得するコードを実行してみました。
該当のコードは以下になります。
import socket import ssl import OpenSSL def get_server_certificate(hostname): context = ssl.create_default_context() with socket.create_connection((hostname, 443)) as sock: with context.wrap_socket(sock, server_hostname=hostname) as sslsock: der_cert = sslsock.getpeercert(True) return ssl.DER_cert_to_PEM_cert(der_cert) cert = get_server_certificate('www.google.com') x509 = OpenSSL.crypto.load_certificate(OpenSSL.crypto.FILETYPE_PEM, cert)
エラーの内容は以下になります。
can only concatenate str (not "SSLContext") to str
エラー内容で、検索にかけ調べてみたのですが、分からなかった為質問させて貰いました。
どなたか、ご助言頂けましたら幸いです。
追記です
環境構築は、VScodeを用いて、行いました。
フレームワークはDjangoを使用しています。
以下は、フロント部分のindex.html
になります
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>demo</title> </head> <body> <form action="{% url 'tool:check' %}" method="post"> {% csrf_token %} <input type="url" name="check_url" placeholder="http://example.com"> <button type="submit" name="check" value="send">送信</button> </form> </body> </html>
以下は、URL.pyになります。
from django.urls import path from . import views app_name = 'tool' urlpatterns = [ # ex: /polls/ path('', views.index, name='index'), # ex: /polls/5/ path('<int:question_oo>/', views.detail, name='detail'), # ex: /polls/5/results/ path('check', views.check, name='check'), # ex: /polls/5/vote/ path('<int:question_id>/vote/', views.vote, name='vote'), ]
以下は、views.py(仕事の都合上一部のコードのみ掲載)
import socket import ssl import OpenSSL #SSL通信 def get_server_certificate(hostname): context = ssl.create_default_context() print('contextは ' + context) # exit() with socket.create_connection((hostname, 443)) as sock: print('sockは ' + sock ) with context.wrap_socket(sock, server_hostname=hostname) as sslsock: print('sslsockは ' + sslsock ) der_cert = sslsock.getpeercert(True) print('der_certは ' + der_cert) return ssl.DER_cert_to_PEM_cert(der_cert) def check(request): cert = get_server_certificate('www.google.com') print(cert) x509 = OpenSSL.crypto.load_certificate(OpenSSL.crypto.FILETYPE_PEM, cert)
回答1件
あなたの回答
tips
プレビュー