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

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

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

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

Q&A

解決済

3回答

8017閲覧

OpenSSLというのは、アプリケーションの名前ですか?使うときは必ずビルドして使うのでしょうか?

GiveAHand

総合スコア286

OpenSSL

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

0グッド

2クリップ

投稿2017/01/15 00:21

OPenSSLについて、よくわからないのでご教授願えないでしょうか?

OPenSSLというのは、SSL通信を行う為のアプリケーションで、下記URLからダウンロードして、ビルドして使うものの事を言うのでしょうか?

https://www.openssl.org/source/

また、OpenSSLというのは、必ずビルドして使うものなのでしょうか?

わざわざビルドさせるのは、様々なプラットフォームで対応させるためでしょうか?

正直、このビルドして使うタイプの配布方法は、ビルドがうまくいかないケースが多く、苦手なのですが、そのあたりはやっぱり慣れとかでしょうか?

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

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

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

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

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

guest

回答3

0

ベストアンサー

OPenSSLというのは、SSL通信を行う為のアプリケーションで、

アプリケーションの定義によりますが、正確には違います。OpenSSLには「SSL通信を行う為のアプリケーション」が含まれるだけであって、それだけのソフトウェアではありません。OpenSSLはTLS/SSLを扱うための総合的なツールキットであり、その中には、

  • TLS/SSLのためのライブラリ
  • TLS/SSLの利用を補助するためのツール(暗号鍵作成や証明書作成など)
  • TLS/SSL通信を行うツール(OpenSSLのみでTLS/SSLサーバーやクライアントとして使うなど)
  • 暗号化のためのライブラリ
  • 暗号化のためのツール(ファイルをAESで暗号化するなど)

等があります。

一般にアプリケーションと言った場合、アプリケーションソフトウェアを指すと思われます。具体的にコマンドやダブルクリックなどで実行し、なにからの処理をさせる物とここでは私は解釈しました。OpenSSL自身にもアプリケーションの機能はツールとして備わっていますが、SSL/TLSや暗号化のためのライブラリとしても使用可能です。ライブラリとして使用した場合は、OpenSSLが単独で実行されるアプリケーションとなるわけではなく、他のアプリケーションから利用される形になります。

また、SSL/TLSのみでは無く、暗号化技術全般のツール・ライブラリとしても使用できるようになっており、SSL/TLS通信を行う為だけではありません。場合によっては、暗号化の機能しか使用しない場合もあります。

下記URLからダウンロードして、ビルドして使うものの事を言うのでしょうか?
https://www.openssl.org/source/
また、OpenSSLというのは、必ずビルドして使うものなのでしょうか?

ほとんどの場合はビルドする必要はありません

OpenSSLは大変有名なソフトウェアです。そのため、ほとんどのUNIX(macOS含む)/LinuxではOS標準またはパッケージとしてビルド済みのOpenSSLを各OSの開発者が用意しています。また、暗号化に関する機能についてはOpenSSLに依存する物が多く、ほとんどのUNIX/LinuxではOS標準で組み込み、または、デフォルトでパッケージがインストールされるようになっています。多くの場合は、OS側が用意するビルド済みOpenSSLを利用して問題ありません。インストール時に入っていなかったとしても、コマンド一つでパッケージとして入れることが可能です。

ただし、例外はあります。

一つはWindowsです。Windowsを制作しているMicrosoftはOpenSSLをWindowsに含めていません。また、製品レベルのビルド済みパッケージも用意していません。しかし、バイナリがまったく無いわけではありません。Windows向けOpenSSLバイナリは探せばたくさんあります(OpenSSLのWikiページにもいくつか紹介されています)。中には他のアプリケーションと一緒に含まれている物もあります。ただし、どれも非公式のため、ビルドした開発者をどう信頼するのかしか判断基準はありません。

もう一つは最新版を使いたい場合です。UNIX/Linux向けのパッケージの場合、通常、そのOSの開発中の最新バージョンが使われます。しかし、OSをリリースした後はOpenSSL自体のバージョンを上げることは滅多にありません。これは互換性を維持するためです。ただ、セキュリティーホールなどの重大なバグは個別にパッチをあててビルドし直した物をアップデートパッケージとして提供するため、着実にパッケージのアップデートを実施していれば、OpenSSLが古いバージョンであっても脆弱性があったままになるということはありません。しかし、最新版で追加された機能を使うため、どうしても最新版を入れたい場合は、やはり自分でビルドするしかありません。

わざわざビルドさせるのは、様々なプラットフォームで対応させるためでしょうか?

公式ではソースのみ公開し、ユーザーにビルドさせるというのはUNIXの文化です。OSやCPUのアーキテクチャの違いを吸収させるには、ソースからビルドさせるしかありません。かといって、公式で全てのOSのビルド済みパッケージを用意するのは非現実的です。※

※ 最近は、自分でビルドするという文化がないWindowsやmacOS、また、ライトなLinuxユーザーが多いUbuntu向けについては、ビルド済みのバイナリを用意するソフトウェアも多いです。

正直、このビルドして使うタイプの配布方法は、ビルドがうまくいかないケースが多く、苦手なのですが、そのあたりはやっぱり慣れとかでしょうか?

私の経験上、ビルドがうまく行かなかった原因の9割はREADME等に書かれたビルド方法通りにやっていない(特に注意事項を実施していない)事です。あとの1割はマイナーなOS(Linuxであればディストリビューション)を使っていて、その特有の現象にぶつかった場合です。マイナーなOSを使っていない限り、README等をきちんと読めば、問題にぶつかることはほとんど無いと思います。

また、OpenSSLのように誰でも使うような有名なソフトウェアについては、メジャーなOSの場合は大抵バイナリが存在します。ですので、自分でビルドする場合はかなり希だと思います。あえてマイナーなOSを使いたいというのであれば、全て自分でビルドすることが前提と思わなければ、使いこなすことがそもそも無理だと思います。

投稿2017/01/15 11:13

raccy

総合スコア21733

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

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

GiveAHand

2017/01/15 12:10

raccy様 本当に本当に詳しい説明よく理解でしました! なるほど、そうなんですね~。 あと、もしよかったら教えて頂きたいのですが、今、ちょうどOpen SSLをWindowsでビルドしようとして、どうしてもエラーが出てしまってうまくいかないのです。 このURLを見て、 http://relog.xii.jp/mt5r/2013/11/opensslwindows32bit64bit.html 64bit版のビルドをしたいのですが、 nmake -f ms\ntdll.mak install この一文を実行すると、 fatal error U1073: 'install'のビルド方法が指定されていません。 と、出てしまいます。 これ、MicrosoftのDeveloper NetWorkを見ますと、 https://msdn.microsoft.com/ja-jp/library/65faht2w.aspx このように書かれているのですが、何の事かよく意味が分かりません。 このエラーは一体どんな理由で起こっているのでしょう? 何かしら、わかることはございませんでしょうか?
raccy

2017/01/15 12:28 編集

たぶん、ms\ntdll.makの作成に失敗しているか何かと思います。 参考にされているサイトと全てのソフトが全く同じバージョンで試していますでしょうか?ビルド方法はバージョンによって異なるばあいがあります。OpenSSLのINSTALLやNOTES.WINに書かれていない方法はすこしでも環境が異なればうまくいかないと思った方がいいです。特に、個人ブログは、その書いた本人しかうまくいかないというのは多々あります。
GiveAHand

2017/01/15 14:42

raccy様 ご回答ありがとうございます。 バージョンの違いですか? まだまだ疑問だらけなので、この問題別の質問にしてみたいと思います。 ありがとうございました!
guest

0

OPenSSLというのは、SSL通信を行う為のアプリケーションで、...

そうです。

正確に言うと、

OpenSSL is an open source project that provides a robust, commercial-grade, and full-featured toolkit for the Transport Layer Security (TLS) and Secure Sockets Layer (SSL) protocols. It is also a general-purpose cryptography library. (...)


https://www.openssl.org/

と説明されています。OpenSSLとは、「OpenSSL」というアプリケーション (応用ソフトウェア) を製作し、公開することを目的とする、とあるプロジェクトの名称です。

...下記URLからダウンロードして、ビルドして使うものの事を言うのでしょうか?

https://www.openssl.org/source/

また、OpenSSLというのは、必ずビルドして使うものなのでしょうか?

そうです。

どのソフトウェアも、最初はソースコードからビルドして作られます。ただ、製造した人や団体が、ソースコードからビルドしたものだけを流通させ、ソースコードは非公開とすることもあります (多くの商用ソフトウェアでは、そうしています)。

OpenSSLはオープンソースソフトウェアですので、ソースコードは必ず公開されます。

わざわざビルドさせるのは、様々なプラットフォームで対応させるためでしょうか?

そうです。

上で述べたソースコード非公開のソフトウェアでも、さまざまなプラットフォームに対応したバージョンが供給されることがありますね (32ビット版と64ビット版のように)。それぞれのプラットフォームにあわせてビルドしたものを流通させているからです。またオープンソースソフトウェアであっても、主要なプラットフォーム向けにビルドしたものが公開されている場合があります。さまざまなビルドずみのソフトウェアをセットにしたもの (ディストリビューション) を提供している人・団体 (ディストリビュータ) もいます。

目的のプラットフォーム用にビルドずみのものが手に入らない、とか、ビルドされたものは使いたいオプション機能が有効になっていない、といったときは、ソースコードから自分でビルドする必要があります。

よくある例としては、セキュリティホールなどが発見されたとき、最新の対策ずみのソースコードからビルドすることで、他人がビルドしてくれるのを待たずに対策ずみのソフトウェアに置き換える、というものが挙げられます。

正直、このビルドして使うタイプの配布方法は、ビルドがうまくいかないケースが多く、苦手なのですが、そのあたりはやっぱり慣れとかでしょうか?

そうです。

先に述べたように「オープンソースソフトウェア」や「フリーソフトウェア」はソースコードが公開されているので、誰でもビルドできます。ビルドの手順も、ある程度似通っているものが多いです。慣れてくれば、初めてのソフトウェアでも自分でビルドできるようになります。

ある特定のソフトウェアのビルドがうまくいかない、といったことがあれば、また質問して下さい。

投稿2017/01/15 05:11

編集2017/01/15 06:52
ikedas

総合スコア4227

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

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

GiveAHand

2017/01/15 12:25

ikedas様 ご回答、ありがとうございます! なるほど、そういう事なんですね! >ある特定のソフトウェアのビルドがうまくいかない、といったことがあれば、また質問して下さい。 では、お言葉に甘えましてですが、上の、raccy様への返信に書いた、「nmake -f ms\ntdll.mak install」実行時のエラー、何かわかる事は無いでしょうか?
ikedas

2017/01/15 12:57

うーん、 それは新しい質問にしてもらった方が。 teratailでは、コメントの内容は検索しても引っかからないようなんです。これは、みんなの役に立つような情報は質問と回答に書こう、ということだと思います。
GiveAHand

2017/01/15 14:43

ikedas様 あぁそうなんですね。 了解しました。 そうします!
guest

0

OPenSSLというのは、SSL通信を行う為のアプリケーションで、

YESといってよいと思います。

下記URLからダウンロードして、ビルドして使うものの事を言うのでしょうか?

必ずしもYESではないと思います。

OSS(オープンソースソフトウェア)の場合そのソフトウェアおよびターゲットプラットフォーム(OS)がポピュラーなものなら大抵バイナリーパッケージが用意されていると思います。OSSのプロジェクトに近い場所に用意されていることもあれば、プラットフォームの提供元のサイトからダウンロードできたりといろいろではないでしょうか?

昔からの傾向だと思うのですがOSSはソフトウェア開発環境として最もポピュラー(?)なUnix系のプラットフォーム前提で作られることが多いような気がします。ですのでUnix/Linuxを使っていると代表的なものであればわざわざ自分でビルドしなくていいことが多いように思います。またWindowsやMacなど有名なプラットフォームだとそれ用にビルドしたものが配布されていることも多いと思います。ただプラットフォームの違いにより一部の機能が違っていたりすることもまたよくあるかもしれません。

投稿2017/01/15 01:53

KSwordOfHaste

総合スコア18392

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

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

GiveAHand

2017/01/15 12:26

KSwordOfHaste様 ご回答ありがとうございました! よく理解できました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問