导航:首页 > 程序命令 > 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命令相关的资料

热点内容
墨痕斋是什么游戏的服务器 浏览:940
word文件如何压缩大小 浏览:277
遵义联通服务器地址是什么 浏览:29
ansys约束命令流 浏览:814
解压软件电脑版如何下载 浏览:791
闪电匕首算法球 浏览:692
linuxredis停止命令 浏览:670
大麦账号怎么加密 浏览:113
穿越火线怎么找服务器 浏览:526
秘密加密社交软件app 浏览:256
c语言编译器怎么找文件 浏览:835
数学不好能编程吗 浏览:254
微云里的视频加密 浏览:41
3大加密货币交易平台 浏览:647
钣金激光切割机编程 浏览:496
vivo手机手电筒app在哪里 浏览:787
单片机晶振电路电容 浏览:887
穿越火线河南一区服务器云主机 浏览:41
文件夹与快捷方式显示一致 浏览:879
幻影服务器怎么看金钱 浏览:349