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

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

ただいまの
回答率

90.52%

  • OpenSSL

    107questions

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

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

解決済

回答 3

投稿

  • 評価
  • クリップ 0
  • VIEW 1,168

GiveAHand

score 268

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

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

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

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

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

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

checkベストアンサー

+4

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 21: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

    このように書かれているのですが、何の事かよく意味が分かりません。

    このエラーは一体どんな理由で起こっているのでしょう?

    何かしら、わかることはございませんでしょうか?

    キャンセル

  • 2017/01/15 21:27 編集

    たぶん、ms\ntdll.makの作成に失敗しているか何かと思います。

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

    キャンセル

  • 2017/01/15 23:42

    raccy様

    ご回答ありがとうございます。
    バージョンの違いですか?

    まだまだ疑問だらけなので、この問題別の質問にしてみたいと思います。

    ありがとうございました!

    キャンセル

+1

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

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

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

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

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/01/15 21:26

    KSwordOfHaste様

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

    キャンセル

+1

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 21:25

    ikedas様

    ご回答、ありがとうございます!
    なるほど、そういう事なんですね!

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

    では、お言葉に甘えましてですが、上の、raccy様への返信に書いた、「nmake -f ms\ntdll.mak install」実行時のエラー、何かわかる事は無いでしょうか?

    キャンセル

  • 2017/01/15 21:57

    うーん、
    それは新しい質問にしてもらった方が。

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

    キャンセル

  • 2017/01/15 23:43

    ikedas様

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

    キャンセル

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

  • ただいまの回答率 90.52%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • OpenSSL

    107questions

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

  • トップ
  • OpenSSLに関する質問
  • OpenSSLというのは、アプリケーションの名前ですか?使うときは必ずビルドして使うのでしょうか?