OpenSSLは、Secure Socket Layer(SSL)およびTransport Layer Security(TLS)プロトコルを実装するために使用されるオープンソースツールキットです。ツールキットには、さまざまなオプションを使用して実行できる多数の機能がロードされています。 Linux管理者は、ネットワークを保護するためのopensslコマンドを知っている必要があります。これには、POP、IMAPサーバー、https証明書のテスト、自己署名キーの生成、ベンチマーク速度などが含まれます…
エンドユーザーは、opensslコマンドを使用して、CSR(証明書署名要求)の生成、PEMからPKCS12への変換、PKC12からPEMへの変換、証明書の検証、識別名の抽出などを行うこともできます。
Ok!どうぞ
1。 OpenSSL Toolkitをインストールするにはどうすればよいですか?
これを行うのは難しいことではありません。マシンにYUMを構成している場合は、以下のコマンドを実行します。
$ yum install openssl
$ yum install openssl-devel
Ubuntuを実行している場合、コマンドは次のようになります。
$ apt-get install openssl
$ apt-get install openssl-devel
ソースからOpenSSLをインストールする
OpenSSLソースをダウンロードしてここで説明されているようにコンパイルすることもできます 。
2。 OpenSSLのバージョンを確認するにはどうすればよいですか?
$ openssl versionOpenSSL1.0.0-fips2010年3月29日
「-a」オプションを使用して詳細情報を取得することもできます
$ openssl version -a
OpenSSL 1.0.0-fips 2010年3月29日
構築日:Mon Mar 4 22:19:53 UTC 2013
プラットフォーム:linux-x86_64
オプション:bn(64,64)md2(int )rc4(8x、int)des(idx、cisc、16、int)blowfish(idx)
コンパイラ:gcc -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DKRB5_MIT -m64 -DL_ENDIAN -D -Wall -O2 -g -pipe -Wall -Wp、-D_FORTIFY_SOURCE =2 -fexceptions -fstack-protector –param =ssp-buffer-size =4 -m64 -mtune =generic -Wa、–noexecstack -DMD32_REG_T =int -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DWHIRLPOOL_ASM
OPENSSLDIR:“ / etc / pki / tls”
engines:aesni dynamic
本番サーバーはOpenSSLバージョン1.0.1e-fipsを実行していますか ?次に、2015年3月に報告された深刻なOpenSSLの脆弱性があり、セキュリティ専門家のチームによって迅速な修正も提案されています。
3。 opensslのヘルプオプションを一覧表示するにはどうすればよいですか?
opensslで使用可能なオプションのリストを特定することは、それほどユーザーフレンドリーではありません。たとえば、「-h」、「-help」、または「help」オプションを使用すると「無効なオプション」と表示されますが、opensslでサポートされているオプションのリストを取得する方法です。 opensslに無効なオプションを指定すると、有効なオプションが一覧表示されます。
openssl -hopenssl:Error:'-h'は無効なコマンドです。
標準コマンド
asn1parseca ciphers cms
crl crl2pkcs7 dgst dh
dhparam dsa dsaparam enc
engine errstr gendh gendsa
genpkey genrsa nseq ocsp
passwd pkcs12 pkcs7 pkcs8
pkey pkeyparam pkeyutl prime
rand req rsa rsautl
s_client s_server s_time sess_id
smime speed spkacts
バージョンx509を確認
メッセージダイジェストコマンド(詳細については、「dgst」コマンドを参照してください)
md2 md4 md5 rmd160
sha sha1
暗号化コマンド(詳細については、「enc」コマンドを参照してください)
aes-128-cbc aes-128-ecb aes-192-cbc aes-192-ecb
aes-256-cbc aes-256- ecb base64 bf
bf-cbc bf-cfb bf-ecb bf-ofb
camellia-128-cbc camellia-128-ecb camellia-192-cbc camellia-192-ecb
camellia-256 -cbc camellia-256-ecb cast cast-cbc
cast5-cbc cast5-cfb cast5-ecb cast5-ofb
des des-cbc des-cfb des-ecb
des-ede des- ede-cbc des-ede-cfb des-ede-ofb
des-ede3 des-ede3-cbc des-ede3-cfb des-ede3-ofb
des-ofb des3 desx rc2
rc2 -40-cbc rc2-64-cbc rc2-cbc rc2-cfb
rc2-ecb rc2-ofb rc4 rc4-40
seed seed-cbc seed-cfb seed-ecb
これで、同じヒントを使用してサブコマンドのヘルプを取得することもできます。
$ openssl crl -hunknown option -husage:crl args
-inform arg –入力形式–デフォルトのPEM(DERまたはPEM)
-outform arg –出力形式–デフォルトのPEM
-text –テキスト形式のバージョンを出力
-in arg –入力ファイル–デフォルトのstdin
-out arg –出力ファイル–デフォルトのstdout
-hash –ハッシュ値の印刷
-fingerprint –crl指紋の印刷
-issuer –発行者DNの印刷
-lastupdate –lastUpdateフィールド
-nextupdate–nextUpdateフィールド
-crlnumber –CRL番号を出力
-noout–CRL出力なし
-CAfilename –ファイル内の証明書を使用してCRLを検証します。 name」
-CApathdir–「dir」の証明書を使用してCRLを検証します
-nameopt arg –さまざまな証明書名オプション
4。 opensslでサポートされている暗号を一覧表示するにはどうすればよいですか?
$openssl暗号-vDHE-RSA-AES256-SHASSLv3Kx =DH Au =RSA Enc =AES(256)Mac =SHA1DHE-DSS-AES256-SHA SSLv3 Kx =DH Au =DSS Enc =AES(256)Mac =SHA1DHE-RSA-CAMELLIA256-SHA SSLv3 Kx =DH Au =RSA Enc =Camellia(256)Mac =SHA1DHE-DSS-CAMELLIA256-SHA SSLv3 Kx =DH Au =DSS Enc =Camellia(256)Mac =SHA1AES256-SHA SSLv3 Kx =RSA Au =RSA Enc =AES(256)Mac =SHA1CAMELLIA256-SHA SSLv3 Kx =RSA Au =RSA Enc =Camellia(256)Mac =SHA1PSK-AES256-CBC-SHA SSLv3 Kx =PSK Au =PSK Enc =AES(256 )Mac =SHA1EDH-RSA-DES-CBC3-SHA SSLv3 Kx =DH Au =RSA Enc =3DES(168)Mac =SHA1EDH-DSS-DES-CBC3-SHA SSLv3 Kx =DH Au =DSS Enc =3DES(168)Mac =SHA1DES-CBC3-SHA SSLv3 Kx =RSA Au =RSA Enc =3DES(168)Mac =SHA1PSK-3DES-EDE-CBC-SHA SSLv3 Kx =PSK Au =PSK Enc =3DES(168)Mac =SHA1KRB5-DES-CBC3 -SHA SSLv3 Kx =KRB5 Au =KRB5 Enc =3DES(168)Mac =SHA1KRB5-DES-CBC3-MD5 SSLv3 Kx =KRB5 Au =KRB5 Enc =3DES(168)Mac =MD5DHE-RSA-AES128-SHA SSLv3 Kx =DH Au =RSA Enc =AES(128)Mac =SHA1DHE-DSS-AES128-SHA SSLv3 Kx =DH Au =DSS Enc =AES(128)Mac =SHA1DHE-RSA-SEED-SHA SSLv3 Kx =DH Au =RSA Enc =SEED (128)Mac =SHA1DHE-D SS-SEED-SHA SSLv3 Kx =DH Au =DSS Enc =SEED(128)Mac =SHA1DHE-RSA-CAMELLIA128-SHA SSLv3 Kx =DH Au =RSA Enc =Camellia(128)Mac =SHA1DHE-DSS-CAMELLIA128-SHA SSLv3 Kx =DH Au =DSS Enc =Camellia(128)Mac =SHA1AES128-SHA SSLv3 Kx =RSA Au =RSA Enc =AES(128)Mac =SHA1SEED-SHA SSLv3 Kx =RSA Au =RSA Enc =SEED(128)Mac =SHA1CAMELLIA128-SHA SSLv3 Kx =RSA Au =RSA Enc =Camellia(128)Mac =SHA1PSK-AES128-CBC-SHA SSLv3 Kx =PSK Au =PSK Enc =AES(128)Mac =SHA1RC4-SHA SSLv3 Kx =RSA Au =RSA Enc =RC4(128)Mac =SHA1RC4-MD5 SSLv3 Kx =RSA Au =RSA Enc =RC4(128)Mac =MD5PSK-RC4-SHA SSLv3 Kx =PSK Au =PSK Enc =RC4(128)Mac =SHA1KRB5-RC4- SHA SSLv3 Kx =KRB5 Au =KRB5 Enc =RC4(128)Mac =SHA1KRB5-RC4-MD5 SSLv3 Kx =KRB5 Au =KRB5 Enc =RC4(128)Mac =MD5EDH-RSA-DES-CBC-SHA SSLv3 Kx =DH Au =RSA Enc =DES(56)Mac =SHA1EDH-DSS-DES-CBC-SHA SSLv3 Kx =DH Au =DSS Enc =DES(56)Mac =SHA1DES-CBC-SHA SSLv3 Kx =RSA Au =RSA Enc =DES( 56)Mac =SHA1KRB5-DES-CBC-SHA SSLv3 Kx =KRB5 Au =KRB5 Enc =DES(56)Mac =SHA1KRB5-DES-CBC-MD5 SSLv3 Kx =KRB5 Au =KRB5 Enc =DES(56)Mac =MD5EXP- EDH-RSA-DES-CBC-SHA SSLv3 Kx =DH( 512)Au =RSA Enc =DES(40)Mac =SHA1 exportEXP-EDH-DSS-DES-CBC-SHA SSLv3 Kx =DH(512)Au =DSS Enc =DES(40)Mac =SHA1 exportEXP-DES-CBC- SHA SSLv3 Kx =RSA(512)Au =RSA Enc =DES(40)Mac =SHA1 exportEXP-RC2-CBC-MD5 SSLv3 Kx =RSA(512)Au =RSA Enc =RC2(40)Mac =MD5 exportEXP-KRB5- RC2-CBC-SHA SSLv3 Kx =KRB5 Au =KRB5 Enc =RC2(40)Mac =SHA1 exportEXP-KRB5-DES-CBC-SHA SSLv3 Kx =KRB5 Au =KRB5 Enc =DES(40)Mac =SHA1 exportEXP-KRB5- RC2-CBC-MD5 SSLv3 Kx =KRB5 Au =KRB5 Enc =RC2(40)Mac =MD5 exportEXP-KRB5-DES-CBC-MD5 SSLv3 Kx =KRB5 Au =KRB5 Enc =DES(40)Mac =MD5 exportEXP-RC4- MD5 SSLv3 Kx =RSA(512)Au =RSA Enc =RC4(40)Mac =MD5 exportEXP-KRB5-RC4-SHA SSLv3 Kx =KRB5 Au =KRB5 Enc =RC4(40)Mac =SHA1 exportEXP-KRB5-RC4-MD5 SSLv3 Kx =KRB5 Au =KRB5 Enc =RC4(40)Mac=MD5エクスポート
5。証明書署名要求(CSR)を生成する方法は?
証明書署名要求の送信には特定の手続きが必要であり、そのプロセス全体は認証局(CA)によって異なります。ただし、認証局が証明書生成インターフェイスを提供していない場合は、クライアント側から要求を生成できます。
opensslを使用している場合、他に何が必要ですか?
$ openssl req -new -newkey rsa:1024 -nodes -keyout key.pem -out req.pem
ここで
req:リクエストの生成に使用されるオプション。
-新規:新しいリクエストを生成します
-newkey:新しいキーを生成します
rsa:1024:使用されるアルゴリズム、およびキー1024ビットの長さ。 rsa:2048、rsa:4096などに置き換えることができます。
-keyout:key.pemファイルに新しいキーを出力します。
-out:「req.pem」ファイルにリクエストを出力します。
サンプル出力、
$ openssl req -new -newkey rsa:1024 -nodes -keyout key.pem -outreq.pem1024ビットRSA秘密鍵の生成................... .................................................。 ............................ ++++++....++++++新しい秘密鍵を'に書き込むkey.pem'-----証明書要求に組み込まれる情報の入力を求められます。入力しようとしているのは、識別名またはDNと呼ばれるものです。フィールドはかなりありますが、一部の空白を残すことができます一部のフィールドにはデフォルト値があります。「。」を入力すると、フィールドは空白のままになります。-----国名(2文字コード)[XX]:INStateまたはProvince Name(full name)[]:CHELocality Name(eg、city)[Default City]:CHOrganization Name(eg、company)[Default Company Ltd]:F4Organizational Unit Name(eg、section)[]:ITCommon Name(eg、your name or yourサーバーのホスト名)[]:myserverEmailアドレス[]:[email protected]
証明書リクエストとともに送信される
次の「追加」属性を入力してください
チャレンジパスワード[]:
オプションの会社名[]:
出力ファイル、
$ls-rw-r--r--。 1ルートルート916Oct2813:06key.pem-rw-r--r--。 1ルートルート67610月28日13:06req.pem
6。 OpenSSLを使用して自己署名キーを生成するにはどうすればよいですか?
サーバーに展開するための自己署名証明書を生成できます。これを行うには、以下のコマンドを実行します。デフォルトでは、OpenSSLは証明書要求に署名するためにsha1アルゴリズムを使用します。より良いセキュリティ対策として、x509SHA256ハッシュ自己署名証明書を明示的に生成することもできます[bysha1はすでに壊れています !]。
$ openssl req -x509 -days 365 -nodes -newkey rsa:2048 -keyout key.pem -out cert.pem
ここで
x509:はデジタル証明書の標準です
-日数:証明書の有効期間、ほとんど1年。
7。リモートWebサーバーの証明書をテストする方法は?
opensslのクライアントオプションを使用して、リモートサーバーの証明書情報を表示できます。
$ openssl s_client -connect google.com:443 -showcerts
google.comが照会されたときの出力例
$ openssl s_client -connect google.com:443 -showcertsCONNECTED(00000003)depth =3 C =US、O =Equifax、OU =Equifax Secure Certificate Authorityverify return:1depth =2 C =US、O =GeoTrust Inc.、 CN =GeoTrust Global CAverify return:1depth =1 C =US、O =Google Inc、CN =Google Internet Authority G2verify return:1depth =0 C =US、ST =California、L =Mountain View、O =Google Inc、CN =* .googl e.comverify return:1 --- Certificate chain0 s:/ C =US / ST =California / L =Mountain View / O =Google Inc / CN =*。google.comi:/ C =US / O =Google Inc / CN =Google Internet Authority G2----- BEGIN CERTIFICATE ----- MIIHIDCCBgigAwIBAgIIPRfoBTWJubswDQYJKoZIhvcNAQEFBQAwSTELMAkGA1UEBhMCVVMxEzARBgNVBAoTCkdvb2dsZSBJbmMxJTAjBgN-END CERTIFICATE-
—
サーバー証明書
subject =/ C =US / ST =California / L =Mountain View / O =Google Inc / CN=*。google.com
issuer =/ C =US / O =Google Inc / CN =Google Internet Authority G2
—
クライアント証明書のCA名は送信されません
—
SSLハンドシェイクは4055を読み取りましたバイトおよび書き込み426バイト
—
新規、TLSv1 / SSLv3、暗号はRC4-SHAです
サーバー公開鍵は2048ビットです
安全な再ネゴシエーションがサポートされています
圧縮:なし
拡張:なし
SSLセッション:
プロトコル:TLSv1
暗号:RC4-SHA
セッションID:7036D2353DD2A38D13A24F2791A65FAD5B332628C8FDD37EBF633D9575178BB4
セッションID-ctx:
マスターキー:113AAED5B1E5A23CA33B07AF37DD464BA671922EF5274F116FB7C7835A0749B9 48B6445AC6F10CEB78C0713727713D81
キー引数:なし
Krb5プリンシパル:なし
PSKID:なし
PSKIDヒント:チケット存続期間のヒント:100800(秒)
TLSセッションチケット:
0000– d2 e0 d9 0a 1c 92 16 a7-9f a6 62 4e 06 94249b……….bN..$。
0010 – a2 da 35 9f 1b 57 1f f7-ae c2 c8 c1 28 84 48 c0 ..5..W……(.H。
0020 – ca 97 87 79 7e c3 49 13-78 ed 6b cc 6d 28907a…y 〜.I.x.k.m(.z
0030 – 6d 1d 11 af ac be 74 d9-2c b4 c6 2d 2e fc 7d b1 m…..t。、..-..}。
0040 – ec 23 9d c3 ec 49 80 77-bf 49 41 57 bf a3 3a 1a。#…I.w.IAW ..:。
0050 – d6 3d c1 61 60 d6 e3 bf-90 6e 2f 4d 96 36787d。=.a`….n/M.6x}
0060 – 7d b0 bd e0 df 22 09 01-e3 11 09 67 f1 5b1e49}…。"…..g。[。I
0070 – 42 02 eb 6c 6d a4 d6 5b-e8 ce ef 05 d5 f7 19 a9 B..lm..[……..
0080 – 36 77 66 8b 74 38 09 bf-6c fd 28 37 fb 3a 14 fc 6wf.t8..l。(7。:..
0090 – b2 e6dd2b…+開始時間:1382946144
タイムアウト:300(秒)
リターンコードの確認:0(ok)8。 SSL証明書を確認する方法は?
$ openssl verify pem-file $ openssl verify mycert.pemサンプル出力、
mycert.pem:OKOKが出力として表示されます。たとえば、証明書の有効期限が切れている場合は、それについての苦情が表示されます。 OpenSSLはすべての証明書を検証することはできません。たとえば、自己署名証明書はOpenSSLによって信頼されていません。 OpenSSLは、「/ usr / lib / ssl」の下にある発行者証明書を検証することで証明書を信頼します(ただし、この場所はOSによって異なる場合があります)。簡単なOpenSSLコマンドに従って、安全なWebサイトのSSL証明書で使用されている署名アルゴリズムを確認できます。
OpenSSLが認識または信頼する認証局を確認するには、次のコマンドで、信頼できるCA証明書を格納するディレクトリを表示します。
$ openssl version -dサンプル出力、
OPENSSLDIR: "/ etc / pki / tls"9。 POPサーバーの証明書情報を確認または表示するにはどうすればよいですか?
$ openssl s_client -connect mailserver:99510。 IMAPサーバーをテストまたは検証する方法は?
$ openssl s_client -connect mailserver:99311。 .PEM証明書を表示またはテストする方法は?
$ openssl x509 -text -in usercert.pemサンプル出力、
Certificate:Data:Version:3(0x2)Serial Number:1504(0x5e0)Signature Algorithm:sha1WithRSAEncryption :::::::::::::::::::::::::::::::::::::::12。証明書のDN、有効性、ハッシュを表示する方法は?
$ openssl x509 -subject -in usercert.pem発行者情報を取得する
openssl x509 -noout -in usercert.pem -issuer有効性情報を取得する
openssl x509 -noout -in usercert.pem -dates証明書のハッシュ値を取得する
openssl x509 -noout -in usercert.pem -hashMD5フィンガープリントを取得する
openssl x509 -noout -in usercert.pem -fingerprint13。 .PEM証明書を.P12またはPKCS#12形式に変換するにはどうすればよいですか?
$ openssl pkcs12 -export -inkey userkey.pem -in usercert.pem -out mypcks.p12または
$ openssl pkcs12 -export -inkey userkey.pem -in usercert.pem -out mypcks.pfx.PEMファイルをPFXまたはP12に変換するときに、秘密鍵を保護するパスワードを入力するように求められます。最後に、出力形式もパスワードで保護されます。
14。 .P12証明書を.PEM形式に変換するにはどうすればよいですか?
.P12またはPFXまたはPCKS#12形式には、公開鍵と秘密鍵の両方が含まれます。 .p12ファイルを.PEMにエクスポートすると、2つのファイルが生成されます。
パスワードなしの公開鍵を抽出するには、以下のコマンドを実行します。
openssl pkcs12 -in mycert.p12 -out mycert.pem -nodesパスワードで保護されたプライベートを抽出するには、以下のコマンドを実行します。
openssl pkcs12 -in mycert.p12 -out mycert.pemこれらのファイルが今あるはずです
usercert.pemuserkey.pem15。ファイルのMD5またはSHA1ハッシュを生成するにはどうすればよいですか?
$ openssl dgst -md5 foo.gifMD5(foo.gif)=a303ed7ce439738c2ce9f0791d9799c1openssl dgst -sha1 foo.gifSHA1(foo.gif)=e5cba219bad315b7d0d6e0912a2d423ee980161116。 opensslを使用してファイルをbase64エンコードするにはどうすればよいですか?
サンプルファイルを作成しましょう
$moretg.txtエンコードされますbase64でエンコードするには、次のコマンドを実行します
$ openssl enc -base64 -in tg.txt -out tg-en.txtエンコードされたデータは「tg-en.txt」に保存されます
$ more tg-en.txtSSBhbSBnb2luIHRvIGJlIGVuY29kZWQK17。 opensslを使用してbase64でエンコードされたファイルをデコードするにはどうすればよいですか?
$ openssl enc -base64 -d-intg-en.txtエンコードされますまたは
$ echo "SSBhbSBnb2luIHRvIGJlIGVuY29kZWQK" | openssl enc -base64 -d18。 opensslを使用してファイルを暗号化する方法は?
前に述べたように、
を使用して利用可能な暗号をチェックアウトします。$ openssl ciphers -vサポートされている暗号の1つを使用してtg.txtをtg.encに暗号化するには
openssl enc -aes-256-cbc -salt -in tg.txt -out tg.enc暗号化されたファイルであるバイナリファイルtg.encを取得します。
19。 OpenSSLを使用してファイルを復号化する方法は?
暗号化されたバイナリファイルを復号化するには、暗号化中に使用された暗号とパスフレーズを覚えておく必要があります。
openssl enc -d -aes-256-cbc -in tg.enc20。 OpenSSLベンチマークオプションを使用してシステムの速度を確認するにはどうすればよいですか?
$ openssl speed16サイズのブロックで3秒間md2を実行:3.00sで373915 md2を実行64サイズのブロックで3秒間md2を実行:3.00sで3秒間md2を実行256サイズのブロックで3秒間md2を実行:3.00sで3秒間md2を実行1024で3秒間md2を実行サイズブロック:3.00sで19460 md2s 8192サイズブロックでmd2を3秒実行:3.00sで2506 md2を実行16サイズブロックで3sをmd4を実行:3.00sでmd4を8402125 64サイズブロックで3sをmd4を実行:3.00sでmd4を実行256サイズのブロックで:3877820 md4を3.00秒で実行するmd4を3秒で1024サイズのブロックで実行する:1473222 md4を3.00秒で実行するmd4を3秒で8192サイズのブロックで実行する:218591 md4を3.00秒で実行するmd5を3秒で16サイズのブロックで実行する:5838256 md5を2.99秒で実行する: ::::::::::::::::::::::::::::::::::::::::::::::::::::::OpenSSLには、「速度」と呼ばれるベンチマークオプションが組み込まれています。特定の時間に実行できる操作の数がわかります。
もっとありますか?コメントで教えてください。
Linux