導航:首頁 > 程序命令 > macopenssl命令

macopenssl命令

發布時間:2023-05-23 10:01:57

『壹』 MAC申請自簽名的ssl證書

不建議申請自簽名SSL證書,使用自簽SSL證書的風險如下:
第一、被「有心者」利用。
其實困信「有心者」指的就是黑客。自簽名SSL證書你自己可以簽發,那麼同樣別人也可以簽發。黑客正好利用其隨意簽發性,分分鍾就能偽造出一張一模一樣的自簽證書來安裝在釣魚網站上,讓訪客們分不清孰真孰假。
第二、瀏覽器會彈出警告,易遭受攻擊
前面有提到自簽名SSL證書是不受瀏覽器信任的,即使網站安裝了自簽名SSL證書,當用戶訪問時瀏覽器還是會持續彈出警告,讓用汪彎輪戶體驗度大大降低。因它不是由CA進行驗證簽發的,所以CA是無法識別簽名者並且不會信任它,因此私鑰也形同虛設,網站的安全性會大大降低,從而給攻擊者可乘之機。
第三、安裝容易,吊銷難
自簽名SSL證書是沒有可訪問的吊銷列表的,所以它不具備讓瀏覽器實時查驗證書的狀態,一旦證書丟失或者被盜而無法吊銷,就很有可能被用於非法用途從而讓用戶蒙受損失。同時,瀏覽器還會發出「吊銷列表不可用,是否繼續?」的警告,不僅降低了網頁的瀏覽速度,還大大降低了訪問者對網站的信任度。
第四、超長有效期,時間越長鬧含越容易被破解
自簽名SSL證書的有效期特別長,短則幾年,長則幾十年,想簽發多少年就多少年。而由受信任的CA機構簽發的SSL證書有效期不會超過2年,因為時間越長,就越有可能被黑客破解。所以超長有效期是它的一個弊端。

『貳』 openssl enc命令怎麼用

OpenSSL
OpenSSL 包含一個命令行工具用來完成 OpenSSL 庫中的所有功能,更好的是,它可能已經安裝到你的系統中了。
OpenSSL 是一個強大的安全套接字層密碼庫,Apache 使用它加密 HTTPS,OpenSSH 使用它加密 SSH,但是,你不應該只將其作
為一個庫來使用,它還是一個多用途的、跨平台的密碼工具。
這里簡單說一下 OpenSSL 的背景,在 OpenSSL 之前,叫做 ssleay,它是一個由 EricA.Young 編寫的 SSL 工具,它不斷改
進最終變成了 OpenSSL,與 NCSA 的 HTTPd 變成 Apache 伺服器的過程非常類似,今天,OpenSSL 支持多種加密演算法和協
議。 OpenSSL 有許多的特徵,而且還有 SSL 客戶端和服務端特徵,OpenSSL 還有:
◆美國聯邦政府 NIST FIPS 140-2 一級評估確認
◆TLS,下一代 SSL 協議
◆X.509 密鑰和證書的生成
◆X.509 證書權力
◆S/MIME 加密
◆文件加密和粉碎
◆打亂 UNIX 密碼
◆9 個不同的商業密碼硬體設備
◆密碼性能測試
◆36 個命令
◆6 個消息摘要演算法
◆9 個密碼演算法
◆多個加密協議
盡管 OpenSSL 很復雜,但是大量的復雜性可以被避免的,本文剩下的部分將集中在易於使用的特徵上,在 shell 代碼中僅僅
需要幾行就可以了。
本文使用與我早期編寫的 GnuPG Hacks 文章一致的小結標題,以便於比較 OpenSSL 和 GnuPG。
入門 首先,確認一下 OpenSSL 已經安裝並處於你的徑之下,許多 Linux 發行版,甚至一下小的發行版,都包括了
OpenSSL,通常,OpenSSL 處於/usr/bin/下。
在所有的例子中,shell 提示符都是$。

『叄』 如何調用Mac自帶的Openssl加密庫

使用VS2005下的Visual Studio 2005 Command Prompt進入控制台模式(這個模式會自動設置各種環境變數) 、解壓縮openssl的包,進入openssl的目錄 、perl configure VC-WIN32 盡量在這個目錄下執行該命令,否則找不到Configure文件

『肆』 Mac OS 10.13系統下安裝openssl的坑

在升級了mac os 10.13後發現原先的openssl失效了派胡,於是在使用Homebrew命令安裝,安裝過程中出現以下錯誤:

重點來了,在虛羨碧查閱了無數的關於「 [crypto/rand/rand_unix.o] Error 1」的錯誤語法之後還是無果,於是考慮是不是這個文件本身有問題,所以嘗試,打開finder

查閱系統的文檔發現 kCCSuccess、CCCryptorStatus 是 <CommonCrypto/CommonCrypto.h>里的定義的變數,而error: use of undeclared identifier表示正是找不大這幾個變數,於是在打開的CommonRandom.h里添加

如果修改不了,將文檔復制出來,修改完放回去替換即可。
重啟終端,輸入

完美差舉解決!

『伍』 openssl命令詳解

OpenSSL是一個安全套接字層密碼庫,其包括常用的密碼演算法、常用的密鑰生成和證書封裝管理功能及SSL協議,並提供了豐富的應用程序以供測試。
OpenSSL是一個開源的項目,其由三個部分組成:
1、openssl命令行工具;輪液數臘首
2、libencrypt加密演算法庫;
3、libssl加密模塊應用庫;

這里主要學習下openssl命令工具的用法,openssl命令工具有兩種運行模式: 交換模式 批處理模式 。直接輸入openssl回車即可進入交互模式,而輸入帶命令選項的openssl命令則進行批處理模式。

利用OpenSSL作對稱加密需要使用其子命令enc,其用法為:

其中常用的選項為:

使用案例

OpenSSL單向加密的子命令為dgst,其語法如下:

其常用的選項為:

單向加密除了 openssl dgst 工具還有: md5sum,sha1sum,sha224sum,sha256sum ,sha384sum,sha512sum

使用案例

OpenSSL還支持生成密碼的hash離散值,其子命令為passwd,語法如下:

常用選項為:

使用案例

openssl命令也支持生成隨機數,其子命令為rand,對應的語法為:

常用選項有:

使用案例

利用openssl命令的子命令genrsa生成私鑰,然後再使用子命令rsa私鑰中提取公鑰。
genrsa的語法如下:

通常來說秘鑰文件的許可權一般只能由管理員訪問,因此可以結合umask命令來設置生成的密鑰文件的許可權,如:

而隨後可利用rsa子命令生成的私鑰文件中提取公鑰,rsa子命令的語法為:

常用選項為:
-in FILENAME:指明私鑰文件的存放路徑;
-out FILENAME:指明將公鑰的保存路徑;
-pubout:根據提供的私鑰,從中提取出公鑰;

如:

在使用OpenSSL命令創建證書前,可查看配置文件/etc/pki/tls/openss.conf文件,查看該文件定義了的證書存放位置及名稱。
1)創建自簽證書
首先為CA提供所需的目錄及文件,並指明證書的開始編號:

隨後生成私鑰,注意私鑰的文件名及其存放的位置,需與配置文件中相匹配:

最後創建自簽證書:

其埋基中命令 openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3650 用到子命令為req,其為證書請求及生成的工具,用到的選項解釋為:

2)頒發證書
通常來說在CA簽署頒發證書需要進行以下步驟:

上述命令用到了openssl命令的子命令CA,用於在CA伺服器上簽署或吊銷證書。

上述查看證書使用了openssl命令的子命令x509,其選項解釋為:

3)吊銷證書
吊銷證書的步驟通常為:

-gencrl選項為根據/etc/pki/CA/index.txt文件中的信息生成crl文件。

『陸』 OpenSSL 功能介紹

1 概述

OpenSSL 是一個安全套接字層密碼庫,囊括主要的密碼演算法、常用的密鑰和證書封裝管理功能及SSL協議,並提供豐富的應用程序供測試或其它目的使用。

OpenSSL是實現安全套接字層(SSL v2 / v3)和傳輸層安全(TLS v1)網路協議及其所需的相關加密標準的加密工具包。

OpenSSL:開源項目

三個組件:

openssl: 多用途的命令行工具,包openssl

libcrypto: 加密算運塌扒法庫,包openssl-libs

libssl:加密模塊應用庫,實現了ssl及tls,包nss

.openssl命令:

兩種運行模式:交互模式和批處理模式

opensslversion:程序版本號

標准命旁昌令、消息摘要命令、加密命令

標准命令:enc, ca, req, ...

查看幫助:openssl ?

可以通過openssl 來創建CA和頒發證書,文章 http://ghbsunny.blog.51cto.com/7759574/1964754

有做介紹,本文僅介紹openssl這個工具包的其他常用功能

2 案例介紹

2.1 對稱加密

工具:openssl  enc, gpg,文章 http://ghbsunny.blog.51cto.com/7759574/1964887 已經介紹

演算法:3des, aes, blowfish, twofish

.enc命令:

對稱密碼命令允許使用基於密碼或明確提供的密鑰的各種塊和流密碼來加密或解密數據。 Base64編碼或解碼也可以通過本身或加密或解密來執行。

The symmetric cipher commands allow data to be encrypted or decrypted using various block and stream ciphers using keys based on passwords or explicitly provided. Base64 encoding or decoding can also be performed either by itself or in addition to the encryption or decryption.

幫助:man enc

例子

加密文件

以下命令運行需要輸入一個密碼,當解密的時候需要輸入相同的密碼才能解密,這里新生成的文件後綴名不一定是cipher,可以自己指定

openssl enc  -e -des3 -a -salt -in testfile   -out testfile.cipher

解密文件

openssl  enc   -d -des3 -a -salt –in testfile.cipher -out testfile

2.2 公鑰加密

公鑰加密生成非對稱的密鑰

演算法:RSA, ELGamal

工具:gpg, openssl  rsautl(man rsautl)

數字簽名:

演算法:RSA, DSA, ELGamal

密鑰交換:

演算法:dh

DSA: Digital Signature Algorithm

DSS:Digital Signature Standard

RSA公鑰加密演算法是1977年由羅納德·李維斯特(Ron Rivest)、阿迪·薩莫爾(Adi Shamir)和倫納德·阿德曼(Leonard Adleman)一起提出的。命名是取其名字首衫沒字母組合成RSA

RSA公鑰與私鑰主要用於數字簽名(Digital Signature)與認證(Authentication),我們一般也稱之為不對稱加密/解密。

2.2.1 生成密鑰對

幫助:man genrsa

.生成私鑰,這個生成密鑰的過程要掌握

openssl genrsa  -out /PATH/TO/PRIVATEKEY.FILE NUM_BITS

私鑰文件生成後,建議把許可權改成600,保護,放在被其他人查看密碼信息

私鑰里的文件,如果被拿到,沒有通過des這關鍵字加密的話,就相當於是明文

這個命令執行的時候,要輸入八位數的密碼,當要使用這個私鑰的時候需要輸入密碼

(umask 077; openssl genrsa –out test.key  –des 2048)

括弧表示子進程,結束後,umask就會恢復未默認的值,umask的值使得其他人和組都沒有任何許可權,是為了保護生成的私鑰

2.2.2 從私鑰中提取出公鑰,導出公鑰

公鑰推不出私鑰,私鑰可以推出公鑰

openssl  rsa  -in PRIVATEKEYFILE –pubout  –out PUBLICKEYFILE

Openssl  rsa  –in test.key  –pubout  –out test.key.pub

公鑰是公開的,可以不設置許可權,以上是生成公鑰

2.2.3 公鑰加密文件

openssl rsautl -encrypt -in input.file -inkey pubkey.pem -pubin -out output.file

-in 指定被加密的文件

-inkey 指定加密公鑰文件

-pubin 表面是用純公鑰文件加密

-out 指定加密後的文件

例子:

openssl rsautl -encrypt -in ftpback -inkey test.key.pub -pubin -out ftpssl

2.2.4 私鑰解密文件

openssl rsautl -decrypt -in input.file -inkey key.pem -out output.file

-in 指定需要解密的文件

-inkey 指定私鑰文件

-out 指定解密後的文件

例子:

openssl rsautl -decrypt -in ftpssl -inkey test.key -out  ftpdec

2.3 單向加密

單向加密即獲取摘要

工具:md5sum, sha1sum, sha224sum,sha256sum…

openssl    dgst

dgst:摘要功能輸出所提供文件的消息摘要或十六進制形式的文件。 它們也可用於數字簽名和驗證。

The digest functions output the message digest of a supplied file or files in hexadecimal form. They can also be used for digital signing and verification.

.dgst命令:

幫助:man dgst

openssl  dgst  -md5 [-hex默認]  /PATH/SOMEFILE

openssl dgst  -md5 testfile

以上命令將文件生成一個固定長度的摘要值,演算法是md5,大小佔128bite

md5sum /PATH/TO/SOMEFILE

以上這兩個md5得到的結果是一樣的

.MAC: Message Authentication Code,單向加密(hash)的一種延伸應用,用於實現網路通信中保證所傳輸數據的完整性機制

MAC 消息認證碼,構造方法可以基於hash,也可以基於對稱加密演算法,HMAC是基於hash的消息認證碼。數據和密鑰作為輸入,摘要信息作為輸出,常用於認證。

源文檔

2.4 生成用戶密碼

passwd命令:

幫助:man sslpasswd

openssl  passwd  -1 -salt SALT

-1對應的就是hash的md5演算法

SALT:這里是鹽值,人為指定,使得同一密碼生成的加密值不一樣,最多8位,超過8位沒有意義,比如前面8位一樣,後面還有幾位數不一樣,這樣生成的密碼值是一樣的

openssl  passwd  -1 –salt centos

grub-md5-crypt同樣生成md5加密的口令,centos為鹽值

比如這里的密碼我都是輸入123,但是鹽值不一樣,一個是centos,一個是centos6,生成的加密值不一樣

2.5 生成隨機數

幫助:man sslrand

rand命令在播放隨機數生成器一次後輸出num偽隨機位元組。 與其他openssl命令行工具一樣,除了-rand選項中給出的文件外,PRNG種子使用文件$ HOME / .rnd或.rnd。 如果從這些來源獲得足夠的播種,將會寫回新的$ HOME / .rnd或.rnd文件。

The rand command outputs num pseudo-random bytes after seeding the random number generator once.  As in other openssl command line tools, PRNG seeding uses the file $HOME/.rnd or .rnd in addition to the files given in the  -rand option.  A new $HOME/.rnd or .rnd file will be written back if enough seeding was obtained from these   sources.

openssl  rand -base64|-hex NUM

指定數字生成隨機數,如果是-hex 後面的數值比如6,那麼生成的長度是12位,因為hex生成的隨機數是16進制組合的數,hex 後面的num是位元組數,一個16進制數佔用4位,半個位元組

base後面可以生成隨機密碼

base64 生成隨機的數,可以用任何字元,也可以把圖片保存成base64的格式,通過base64生成的圖片,可以

用base64來還原出圖片

NUM: 表示位元組數;-hex時,每個字元為十六進制,相當於4位二進制,出現的字元數為NUM*2

3 總結

openssl還有很多用法,本文僅單純介紹了其中一部分,更多用法請使用幫助 man openssl 進行查看

『柒』 使用openssl命令從.p12文件中提取證書和私鑰。

' > openssl pkcs12 -in PATH_TO_YOUR_P12 -nocerts -out key.pem -nodes '
'$>或睜 openssl rsa -in key.pem -out key.pem'

.pem 是 base64 編碼的,仿團知備消直接文本打開即可看到證書及密鑰

『捌』 iOS使用openSSL加密應該怎麼做

最近幾天折騰了一下如何在iOS上使用RSA來加密。iOS上並沒有直接的RSA加密API。但是iOS提供了x509的API,而x509是支持RSA加密的。因此,我們可以通過製作自簽名的x509證書(由於對安全性要求不高,我們並不需要使用CA認證的證書),再調用x509的相關API來進行加密。接下來記錄一下整個流程。
第一步,製作自簽名的證書
1.最簡單快捷的方法,打開Terminal,使用openssl(Mac OS X自帶)生成私鑰和自簽名的x509證書。
openssl req -x509 -out public_key.der -outform der -new -newkey rsa:1024 -keyout private_key.pem -days 3650
按照命令行的提示輸入內容就行了。
幾個說明:
public_key.der是輸出的自簽名的x509證書,即我們要用的。
private_key.pem是輸出的私鑰,用來解密的,請妥善保管。
rsa:1024這里的1024是密鑰長度,1024是比較安全的,如果需要更安全的話,可以用2048,但是加解密代價也會增加。
-days:證書過期時間,一定要加上這個參數,默認的證書過期時間是30天,一般我們不希望證書這么短就過期,所以寫上比較合適的天數,例如這里的3650(10年)。
事實上,這一行命令包含了好幾個步驟(我研究下面這些步驟的原因是我手頭已經由一個private_key.pem私鑰了,想直接用這個來生成x509證書,也就是用到了下面的2-3)
1)創建私鑰
openssl genrsa -out private_key.pem 1024
2)創建證書請求(按照提示輸入信息)
openssl req -new -out cert.csr -key private_key.pem
3)自簽署根證書
openssl x509 -req -in cert.csr -out public_key.der -outform der -signkey private_key.pem -days 3650
2.驗證證書。把public_key.der拖到xcode中,如果文件沒有問題的話,那麼就可以直接在xcode中打開,看到證書的各種信息。

第二步,使用public_key.der來進行加密。
1.導入Security.framework。
2.把public_key.der放到mainBundle中(一般直接拖到Xcode就行啦)。
3.從public_key.der讀取公鑰。
4.加密。
下面是參考代碼(只能用於加密長度小於等於116位元組的內容,適合於對密碼進行加密。使用了ARC,不過還是要注意部分資源需要使用CFRealse來釋放)
RSA.h
//
// RSA.h
//
#import Foundation.h>

@interface RSA : NSObject {
SecKeyRef publicKey;
SecCertificateRef certificate;
SecPolicyRef policy;
SecTrustRef trust;
size_t maxPlainLen;
}

- (NSData *) encryptWithData:(NSData *)content;
- (NSData *) encryptWithString:(NSString *)content;

@end

RSA.m
//
// RSA.m
//
#import "RSA.h"

@implementation RSA

- (id)init {
self = [super init];

NSString *publicKeyPath = [[NSBundle mainBundle] pathForResource:@"public_key"
ofType:@"der"];
if (publicKeyPath == nil) {
NSLog(@"Can not find pub.der");
return nil;
}

NSDate *publicKeyFileContent = [NSData dataWithContentsOfFile:publicKeyPath];
if (publicKeyFileContent == nil) {
NSLog(@"Can not read from pub.der");
return nil;
}

certificate = SecCertificateCreateWithData(kCFAllocatorDefault, ( __bridge CFDataRef)publicKeyFileContent);
if (certificate == nil) {
NSLog(@"Can not read certificate from pub.der");
return nil;
}

policy = SecPolicyCreateBasicX509();
OSStatus returnCode = (certificate, policy, &trust);
if (returnCode != 0) {
NSLog(@" fail. Error Code: %ld", returnCode);
return nil;
}

SecTrustResultType trustResultType;
returnCode = SecTrustEvaluate(trust, &trustResultType);
if (returnCode != 0) {
NSLog(@"SecTrustEvaluate fail. Error Code: %ld", returnCode);
return nil;
}

publicKey = SecTrustCopyPublicKey(trust);
if (publicKey == nil) {
NSLog(@"SecTrustCopyPublicKey fail");
return nil;
}

maxPlainLen = SecKeyGetBlockSize(publicKey) - 12;
return self;
}

- (NSData *) encryptWithData:(NSData *)content {

size_t plainLen = [content length];
if (plainLen > maxPlainLen) {
NSLog(@"content(%ld) is too long, must < %ld", plainLen, maxPlainLen);
return nil;
}

void *plain = malloc(plainLen);
[content getBytes:plain
length:plainLen];

size_t cipherLen = 128; // 當前RSA的密鑰長度是128位元組
void *cipher = malloc(cipherLen);

OSStatus returnCode = SecKeyEncrypt(publicKey, kSecPaddingPKCS1, plain,
plainLen, cipher, &cipherLen);

NSData *result = nil;
if (returnCode != 0) {
NSLog(@"SecKeyEncrypt fail. Error Code: %ld", returnCode);
}
else {
result = [NSData dataWithBytes:cipher
length:cipherLen];
}

free(plain);
free(cipher);

return result;
}

- (NSData *) encryptWithString:(NSString *)content {
return [self encryptWithData:[content dataUsingEncoding:NSUTF8StringEncoding]];
}

- (void)dealloc{
CFRelease(certificate);
CFRelease(trust);
CFRelease(policy);
CFRelease(publicKey);
}

@end

使用方法:
RSA *rsa = [[RSA alloc] init];
if (rsa != nil) {
NSLog(@"%@",[rsa encryptWithString:@"test"]);
}
else {
NSLog(@"init rsa error");
}

『玖』 MacOS下使用OpenSSL(LibreSSL)

OpenSSL 是一個安全套接字層密碼庫,囊括主要的密碼演算法、常用的密鑰和證書封裝管理功能及SSL協議,並提供豐富的應用程序供測試或其它目的使用。

自OpenSSL爆出「心臟失血」漏洞後兆衫,蘋果已將原有的 OpenSSL 替換為 LibreSSL。

將長度不固定的消息(Message)作為輸入參數,運行特定的Hash函數,生成固定長度的輸出,這個輸出就是Hash,也稱為這個消息的消息摘要(Message Digest)

常用的單向哈希演算法有: md5, sha1, sha256, sha512等。

MD5演算法為128位,SHA-1為160位,SHA-256為256位。

加密的消息摘要HMAC(Keyed Hash Message Authentication Code)

上面提到的常規Hash演算法,如MD5、SHA,只有一個輸入參數:消息。

如果輸入參數有兩個,一個是消息(Message),另一個是秘鑰(Key),將會生成一個加密的消息摘要HMAC。

為了增強HMAC的安全性,只要升級加密Hash演算法就可以指數級地增加破解難度。例如HMAC-MD6, HMAC-SHA-3。

曾經有一次面試,面試官問到密碼學、敏圓哈希函數、避免碰撞相關的問題。

由於哈希函數是將所有不定長族拿腔的消息轉換成定長的消息,所以消息容量一定變小了,也有有發生碰撞的可能。這時可以通過多個哈希函數交叉驗證來進一步降低發生的可能性。

常用參數: -aes-128-cbc, -aes-128-cfb, -bf-cbc等。

其中密碼演算法:bf, cast, des, aes, rs2等。

加密模式:cbc, ecb, cfb, ofb等。

加密演算法(cipher),加密模式(encryption mode),填充(padding),初始向量(IV)

上面提到的給消息加解密除了需要加密演算法aes/des等之外,還需要加密模式ecb/cbc等。

對稱加密通常有四種模式(ECB、CBC、CFB、OFB)

『拾』 蘋果MAC地址怎麼改

首先,下載es文件瀏覽器。
第二,給es瀏覽器root許可權
第三,打開攜襪圖示中的地址
根目錄/sys/devices/soc.0/a000000.qcom,wcnss-wlan/wcnss_mac_addr
第四,單擊打開為文本
第五,選擇es文判隱笑件閱讀器
第五,點右上角3個點,編輯,然後改為自己想要的mac地址
第六,退出,保存,開飛行模式,關飛行模式,重啟wifi即可。
已知bug:由於是軟修改,此方法重啟掘含後需要重新修改。

閱讀全文

與macopenssl命令相關的資料

熱點內容
貿易pdf 瀏覽:493
dbug命令 瀏覽:351
開逛app如何加好友 瀏覽:958
ftpdos命令下載文件 瀏覽:75
華為如何打開語音伺服器 瀏覽:242
python中的idle 瀏覽:1000
五軸聯動數控編程 瀏覽:965
換一台電腦如何遠程雲伺服器 瀏覽:132
阿里雲怎麼買雲伺服器 瀏覽:664
java提取文字 瀏覽:97
阿里雲伺服器同人賬號問題 瀏覽:420
5分鍾解壓軸題 瀏覽:341
安卓桌面二級文件夾 瀏覽:188
eps文檔加密 瀏覽:261
手機怎麼做pdf 瀏覽:162
ug曲面pdf 瀏覽:279
液化氣還是壓縮氣 瀏覽:950
阿里雲公共ntp伺服器地址 瀏覽:991
金字塔學習機編程 瀏覽:684
多邊形掃描線演算法Python 瀏覽:718