2021-01-01から1年間の記事一覧

幕末と新選組の年表

幕末 は、15年間に多くの歴史的出来事があった。 その中でも、6年だけ存在した 新選組 に焦点を当てます。 年表を作ってみたら、幕末は激動の時代だったと強く感じました。 新選組ファンのために、少し詳しく記述した。 一読すれば、あなたも「新選組」通に…

NSS を使って Firefox の証明書を操作する

ウェブブラウザでオレオレ認証局で作成したサーバ証明書のサイトを閲覧する の続きです 前回の記事では、GUIを使って Firefox の証明書を操作した。 前回の記事では、NSS を使って CUI で Firefox の証明書を操作する。 NSS NSS ( Network Security Services…

C言語にて opensslライブラリを使って 証明書チェーンを備えたHTTPS サーバを作成する

C言語にて ソケット関数と openssl ライブラリを使って HTTPSサーバを作成する の続きです 証明書チェーン 証明書チェーンとは、サーバの認証に使用される証明書のリストです。 このチェーンは、サーバ証明書から始まり、 サーバ証明書を署名した中間局の証…

ウェブブラウザでオレオレ認証局で作成したサーバ証明書のサイトを閲覧する

ウェブブラウザでオレオレ証明書のサイトを閲覧する の続きです オレオレ認証局 オレオレ認証局とは、開発用途で作成する私設の認証局である。 下記を参照のこと openssl コマンドを使って オレオレ認証局を作成してサーバ証明書を発行する https://ken-ohwa…

openssl コマンドを使って SANを設定したサーバ証明書を発行する

openssl コマンドを使って オレオレ認証局を作成してサーバ証明書を発行する の続きです SAN 「SAN」とは、「Subject Alternative Name」の略称で、「サブジェクトの別名」という意味です。 Chrome 58 以降では、ドメイン名とサイト証明書を照合するために c…

openssl コマンドを使って オレオレ認証局を作成してサーバ証明書を発行する

openssl コマンドを使って オレオレ証明書を作成する の続きです 認証局 認証局 (CA:Certification Authority)とは、デジタル証明書を発行する機関である。 wikipedia 認証局 https://ja.wikipedia.org/wiki/%E8%AA%8D%E8%A8%BC%E5%B1%80 証明書の発行は有…

C言語にて openssl ライブラリを使って HTTPS クライアントが HTTPS サーバに接続したときに サーバ証明書を検証する

ソケット関数と openssl ライブラリを使って HTTPS クライアントを作成する の続きです。 サーバ証明書の検証 サーバー証明書とは、「通信の暗号化」「Webサイトの運営者・運営組織の実在証明」の2つの役割をもつ電子証明書です。 認証局が発行します。 参考…

C言語にて ソケット関数と openssl ライブラリを使って HTTPS クライアントを作成する

C言語にて ソケット関数を使って HTTP クライアントを作成する の続きです。 openssl OpenSSLは、SSLプロトコルのソフトウェアである。 C言語のライブラリも備えている。 OpenSSL https://www.openssl.org/ 下記を参照ください。 MAC に openssl をインスト…

C言語にて ソケット関数を使って HTTP クライアントを作成する

C言語にて ソケット関数を使って TCP クライアントを作成する の続きです HTTP クライアント HTTP クライアントとは、 ウェブサーバ(HTTPサーバ) に対して、HTTPプロトコルに則り、 データの送受信を行うプログラムのこと。 この記事で作成するのは、簡単な…

C言語にて ソケット関数を使って TCP クライアントを作成する

C言語にて ソケット関数を使って エコーサーバを作成する の続きです。 TCP クライアント ソケット関数は、コネクション型の TCP (Transmission Control Protocol) と 非コネクション型の UDP (User Datagram Protocol) をサポートしている。 この記事では、…

C言語にて ホスト名からIPアドレスを取得する

DNS 名前解決 ホスト名からIPアドレスを取得するには、 DNSサーバーによる名前解決 (Name Resolution) を利用する。 ホスト名からIPアドレスを取得することを DNS正引き( Forward DNS Lookup)、 IPアドレスからホスト名を取得することを DNS逆引き( Reverse …

C言語にて ソケット関数と openssl ライブラリを使って HTTPSサーバを作成する

C言語にて ソケット関数を使って ウエブサーバを作成する の続きです openssl OpenSSLは、SSLプロトコルのソフトウェアである。 C言語のライブラリも備えている。 OpenSSL https://www.openssl.org/ 下記を参照ください。 MAC に openssl をインストールして…

ウェブブラウザでオレオレ証明書のサイトを閲覧する

オレオレ証明書 公開鍵をそれに対応する私有鍵で署名した 自己署名証明書(self-sigened certificate)のこと。 自己署名なので信頼できない。 ウェブブラウザではその旨の警告が表示される。 ubuntuでインストールされるウエブサーバーもこの形式の証明書を使…

openssl コマンドを使って オレオレ証明書を作成する

openssl OpenSSLは、SSLプロトコルのソフトウェアである。 OpenSSL https://www.openssl.org/ オレオレ証明書 公開鍵をそれに対応する私有鍵で署名した 自己署名証明書(self-sigened certificate)のこと。 wikipedia: 自己署名証明書 https://ja.wikipedia.o…

MAC にて openssl をインストールして開発環境を作る

openssl OpenSSLは、SSLプロトコルのソフトウェアである。 OpenSSL https://www.openssl.org/ C言語のライブラリも提供されている。 ssl-OpenSSL SSL / TLSライブラリ https://www.openssl.org/docs/manmaster/man7/ssl.html OpenSSL libraries https://www.…

C言語にて ソケット関数を使って ウエブサーバを作成する

C言語にて ソケット関数を使って エコーサーバを作成する の続きです ウエブサーバ ウエブサーバ(Web Server)は、HTTPプロトコルに則り、 ウェブブラウザなどのクラアントに対して HTML を返送するプログラム及びコンピュータである。 この記事で作成するの…

C言語にて ソケット関数を使って エコーサーバを作成する

ソケット関数 ソケット(Socket) とはプロセス間通信のためのインターフェースです。 コンピュータ間通信にも使用される。 ソケットに関するシステムコールとC言語プログラミング http://itref.fc2web.com/unix/socket.html ソケット関数とはソケットを扱うC…

C言語にて ISO-2022-JP のファイルを書き出す

C言語にて libiconv を使って ISO-2022-JP と UTF-8 を変換する の続きです。 ISO-2022-JP のファイルを書き出す UTF-8 のファイルを1行ごとに読み込み、 ISO-2022-JP に変換して、 のファイルに書き出す。 FILE *fp; fp = fopen( "utf8.txt", "r"); FILE *…

C言語にて ISO-2022-JP のファイルを読み込む

C言語にて libiconv を使って ISO-2022-JP と UTF-8 を変換する の続きです。 ISO-2022-JP のファイルを読み込む ISO-2022-JP のファイルを1行ごとに読み込み、 UTF-8 に変換して表示する。 FILE *fp; fp = fopen( "iso2022jp.txt", "r"); const size_t LIN…

C言語にて、libiconv を使って ISO-2022-JP から UTF-8 に変換する

libiconv libiconv は、文字列の文字コードを変換するC言語のライブラリです。 gnu libiconv https://www.gnu.org/software/libiconv/ MAC では brew コマンドでインストールできる。 https://formulae.brew.sh/formula/libiconv ISO-2022-JP 日本語メールで…

C++ にて VMime を使って メールサーバからメールを受信する

C++ にて VMime を使って メールを送信する の続きです。 対象とするメールサーバ ローカルネット内に建てた dovecot サーバ および Gmail サーバ Gmail サーバの仕様 サーバ名とポート番号 サーバ名:pop.gmail.com ポート番号 995:(SSL) 下記にあるように…

C++ にて VMime を使って 埋め込み画像付きのメールをファイルから読む

C++ にて VMime を使って 埋め込み画像付きのメールを作成する の続きです。 埋め込み画像付きのメールの構造 下記のように、multipart の中に plain の本文とHTMLのパートと埋め込み画像がある。 Content-Type: multipart/alternative Content-Type: text/p…

C++ にて VMime を使って 埋め込み画像付きのメールを作成する

C++ にて VMime を使って メールを送信する の続きです。 埋め込み画像付きのメールの仕様 メールに画像を埋め込みHTMLパートから参照することができる。 画像ファイルの添付とは異なる。 RFC 2387に規定がある。 RFC2387 The MIME Multipart/Related Conten…

C++ にて VMime を使って HTMLメールをファイルから読む

C++ にて VMime を使って HTMLメールを作成する の続きです。 HTML メールの構造 下記のように、multipartの中に本文とHTMLのデータがある。 Content-Type: multipart/alternative Content-Type: text/plain 本文のデータ Content-Type: text/html HTML のデ…

C++ にて VMime を使って HTMLメールを作成する

C++ にて VMime を使って メールを送信する の続きです。 HTML メールの仕様 RFC 2046、 RFC2854 に規定はあるが、 決め事は多くない。 RFC 2046 Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types http://www.t-net.ne.jp/~cyfis/rfc/mi…

C++ にて VMime を使って 添付ファイル付きのメールをファイルから読む

C++ にて VMime を使って ファイルからメールを読む の続きです。 添付ファイル付きのメールの構造 下記のように、multipartの中に本文と添付ファイルのデータがある。 Content-Type: multipart/mixed; Content-Type: text/plain; charset=us-ascii 本文のデ…

C++ にて VMime を使って 日本語メールをファイルから読む

C++ にて VMime を使って ファイルからメールを読む の続きです。 VMime の 日本語サポート VMime のデフォルトの文字セットは 7ビットASCIIです。 日本語など非ASCIIテキストにも対応している。 下記は、VMime Book に掲載されている例 4.7 文字セットおよ…

C++ にて VMime を使って ファイルからメールを読む

C++ にて VMime を使って メールを送信する の続きです。 メールをファイルから読む 下記は、VMime Book に掲載されている例 5.1 メッセージの解析 https://ken-ohwada.hatenadiary.org/entry/2020/12/30/160715 ファイルからメールを読んで解析する例 // Re…

C++ にて VMime を使って Gmail + OAuth で メールを送信する

C++ にて VMime を使って メールを送信する の続きです。 アクセストークン を取得する libcurl のときと同じです。 C 言語にて libcurl を使って Gmail + OAuth で メールを送信する VMime でアクセストークン を設定する VMimeのサイトに記載がある VMime …

C++ にて VMime を使って TLS 接続してサーバ明書を検証する

C++ にて VMime を使って メールを送信する の続きです。 TLS TLS (Transport Layer Security) は、インターネットにて 通信路を暗号化するためのプロトコルです。 参考 : wikipedia TLS Gmail では必須です。 Gmail 送受信時のメールの暗号化 VMime の TLS…