「javajks文件」jdk生成的文件格式

博主:adminadmin 2023-03-20 14:58:08 279

今天给各位分享javajks文件的知识,其中也会对jdk生成的文件格式进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

证书中的jks、pfx和cer后缀都是什么文件?

jks是JAVA的keytools证书工具支持的证书私钥格式。

pfx是微软支持的私钥格式。

cer是证书的公钥。

如果是你私人要备份证书的话记得一定要备份成jks或者pfx格式,否则恢复不了。

简单来说,cer就是你们家邮箱的地址,你可以把这个地址给很多人让他们往里面发信。

pfx或jks就是你家邮箱的钥匙,别人有了这个就可以冒充你去你家邮箱看信,你丢了这个也没法开邮箱了。

命令行使用JKS文件为APK签名

   目前拿到一个机器的Android系统签名,以JKS格式文件提供,要如何对APK签名呢?按如下步骤操作:

    jarsigner -verbose -keystore xxx.jks -signedjar xxx_signed.apk xxx_unsigned.apk xxx_alias

   其中,xxx.jdk为相应的签名文件,xxx_alias为签名文件里面配置的keystore别名。例如:

   jarsigner -verbose -keystore xbh.jks -signedjar Explorer_signed.apk Explorer_unsigned.apk android

   执行该命令后,要求输入keystore的密码,输入完后,碰到如下提示:

   jarsigner: 无法对 jar 进行签名: java.util.zip.ZipException: invalid entry compressed size (expected 6716 but got 6831 bytes)

   查了下资料,是由于APK已有签名了,于是执行如下命令删除到现有签名:

   zip -d Explorer_unsigned.apk META-INF/\*

  命令执行后有如下提示:

   deleting: META-INF/MANIFEST.MF

   deleting: META-INF/CERT.SF

   deleting: META-INF/CERT.RSA

   执行完该命令后,再执行上面的jarsigner命令重新签名即可,此时有如下提示输出:

  正在添加: META-INF/MANIFEST.MF

  正在添加: META-INF/ANDROID.SF

  正在添加: META-INF/ANDROID.RSA

  正在签名: res/drawable-1280x600/content_item.9.png

  正在签名: res/drawable-1280x600/explorer_logo.png

  正在签名: res/drawable-1280x600/icon.png

  正在签名: res/drawable-1280x600/icon_apk.png

  正在签名: res/drawable-1280x600/icon_audio.png

  正在签名: res/drawable-1280x600/icon_copy.png

  正在签名: res/drawable-1280x600/icon_delete.png

  正在签名: res/drawable-1280x600/icon_folder.png

  正在签名: res/drawable-1280x600/icon_move.png

  正在签名: res/drawable-1280x600/icon_msg.png

  正在签名: res/drawable-1280x600/icon_other.png

  正在签名: res/drawable-1280x600/icon_paste.png

  正在签名: res/drawable-1280x600/icon_photo.png

  正在签名: res/drawable-1280x600/icon_rename.png

  正在签名: res/drawable-1280x600/icon_share.png

  正在签名: res/drawable-1280x600/icon_smb.png

  正在签名: res/drawable-1280x600/icon_video.png

  正在签名: res/drawable-1280x600/line_content.png

  正在签名: res/drawable-1280x600/line_top.png

  正在签名: res/drawable-1280x600/nav_flash1.png

  正在签名: res/drawable-1280x600/nav_flash2.png

 正在签名: res/drawable-1280x600/nav_network1.png

 正在签名: res/drawable-1280x600/nav_network2.png

 正在签名: res/drawable-1280x600/nav_sata1.png

 正在签名: res/drawable-1280x600/nav_sata2.png

 正在签名: res/drawable-1280x600/nav_sdcard1.png

 正在签名: res/drawable-1280x600/nav_sdcard2.png

 正在签名: res/drawable-1280x600/nav_usb1.png

 正在签名: res/drawable-1280x600/nav_usb2.png

 正在签名: res/drawable-1280x600/popup_win.png

 正在签名: res/drawable-1280x600/popup_win1.9.png

 正在签名: res/drawable-1280x600/shadow.png

 正在签名: res/drawable-1280x600/smb_add.png

 正在签名: res/drawable-1280x600/smb_delete.png

 正在签名: res/drawable-1280x600/smb_edit.png

 正在签名: res/drawable-1280x600/smb_search.png

 正在签名: res/drawable-1920x900/background.png

 正在签名: res/drawable-1920x900/content_item.9.png

 正在签名: res/drawable-1920x900/explorer_logo.png

 正在签名: res/drawable-1920x900/icon.png

 正在签名: res/drawable-1920x900/icon_apk.png

 正在签名: res/drawable-1920x900/icon_copy.png

 正在签名: res/drawable-1920x900/icon_delete.png

 正在签名: res/drawable-1920x900/icon_folder.png

 正在签名: res/drawable-1920x900/icon_

 正在签名: res/drawable-1920x900/icon_move.png

 正在签名: res/drawable-1920x900/icon_msg.png

 正在签名: res/drawable-1920x900/icon_music.png

 正在签名: res/drawable-1920x900/icon_other.png

 正在签名: res/drawable-1920x900/icon_paste.png

 正在签名: res/drawable-1920x900/icon_rename.png

 正在签名: res/drawable-1920x900/icon_share.png

 正在签名: res/drawable-1920x900/icon_smb.png

 正在签名: res/drawable-1920x900/icon_video.png

 正在签名: res/drawable-1920x900/line_content.png

 正在签名: res/drawable-1920x900/line_shadow.png

 正在签名: res/drawable-1920x900/line_top.png

 正在签名: res/drawable-1920x900/line_yellow.png

 正在签名: res/drawable-1920x900/nav_flash1.png

 正在签名: res/drawable-1920x900/nav_flash2.png

 正在签名: res/drawable-1920x900/nav_network1.png

 正在签名: res/drawable-1920x900/nav_network2.png

 正在签名: res/drawable-1920x900/nav_sata1.png

 正在签名: res/drawable-1920x900/nav_sata2.png

 正在签名: res/drawable-1920x900/nav_sdcard1.png

 正在签名: res/drawable-1920x900/nav_sdcard2.png

 正在签名: res/drawable-1920x900/nav_usb1.png

 正在签名: res/drawable-1920x900/nav_usb2.png

 正在签名: res/drawable-1920x900/popup_win.png

 正在签名: res/drawable-1920x900/popup_win1.9.png

 正在签名: res/drawable/apk.png

 正在签名: res/drawable/audio.png

 正在签名: res/drawable/background.png

 正在签名: res/drawable/bk.png

 正在签名: res/drawable/blank_page.png

 正在签名: res/drawable/btn_normal.png

 正在签名: res/drawable/btn_pressed.png

 正在签名: res/drawable/cifsmanager.png

 正在签名: res/drawable/close_b.png

 正在签名: res/drawable/content_line.png

 正在签名: res/drawable/copy.png

 正在签名: res/drawable/device.png

 正在签名: res/drawable/device_icon.png

 正在签名: res/drawable/dlna.png

 正在签名: res/drawable/edit_folder.png

 正在签名: res/drawable/explorer_logo.png

 正在签名: res/drawable/file_sharing.png

 正在签名: res/drawable/flash.png

 正在签名: res/drawable/folder.png

 正在签名: res/drawable/folder_back.png

 正在签名: res/drawable/folder_next.png

 正在签名: res/drawable/highlight_disabled.png

 正在签名: res/drawable/highlight_pressed.png

 正在签名: res/drawable/highlight_selected.png

 正在签名: res/drawable/home.png

 正在签名: res/drawable/item_flash.png

 正在签名: res/drawable/item_hl.png

 正在签名: res/drawable/item_sdcard.png

 正在签名: res/drawable/item_smb.png

 正在签名: res/drawable/item_yellow.png

 正在签名: res/drawable/level_up.png

 正在签名: res/drawable/line_top.png

 正在签名: res/drawable/list.png

 正在签名: res/drawable/list_hot.png

 正在签名: res/drawable/listbg.9.png

 正在签名: res/drawable/listbg_press.9.png

 正在签名: res/drawable/main_setting.png

 正在签名: res/drawable/menu_edit.png

 正在签名: res/drawable/nav_flash1.png

 正在签名: res/drawable/nav_flash2.png

 正在签名: res/drawable/nav_network1.png

 正在签名: res/drawable/nav_network2.png

 正在签名: res/drawable/nav_sata1.png

 正在签名: res/drawable/nav_sata2.png

 正在签名: res/drawable/nav_sdcard1.png

 正在签名: res/drawable/nav_sdcard2.png

 正在签名: res/drawable/nav_usb1.png

 正在签名: res/drawable/nav_usb2.png

 正在签名: res/drawable/net_folder.png

 正在签名: res/drawable/new_folder.png

 正在签名: res/drawable/next_

 正在签名: res/drawable/next_image_pressed.png

 正在签名: res/drawable/panel_separator.png

 正在签名: res/drawable/paste.png

 正在签名: res/drawable/popup_blue_border_4.png

 正在签名: res/drawable/pre_

 正在签名: res/drawable/pre_image_pressed.png

 正在签名: res/drawable/rename.png

 正在签名: res/drawable/sdcard.png

 正在签名: res/drawable/search.png

 正在签名: res/drawable/shadow.png

 正在签名: res/drawable/share.png

 正在签名: res/drawable/smb.png

 正在签名: res/drawable/smb_folder_error.png

 正在签名: res/drawable/sort.png

 正在签名: res/drawable/storage_list.png

 正在签名: res/drawable/switch_windows.png

 正在签名: res/drawable/tool_background.9.png

 正在签名: res/drawable/toolbar_down_arrow.png

 正在签名: res/drawable/toolbar_left_arrow.png

 正在签名: res/drawable/toolbar_right_arrow.png

 正在签名: res/drawable/toolbar_up_arrow.png

 正在签名: res/drawable/video.png

 正在签名: res/drawable/yellow_border2.9.png

 正在签名: res/drawable/yellow_border3.9.png

 正在签名: resources.arsc

 正在签名: AndroidManifest.xml

 正在签名: classes.dex

 正在签名: jcifs/http/ne.css

 正在签名: jcifs/util/mime.map

 正在签名: res/anim/image_in.xml

 正在签名: res/anim/image_out.xml

 正在签名: res/drawable/editor_btn.xml

 正在签名: res/drawable/gradient_line.xml

 正在签名: res/drawable/list_selector_background.xml

 正在签名: res/drawable/next_images.xml

 正在签名: res/drawable/pre_images.xml

 正在签名: res/drawable/title_bar_back.xml

 正在签名: res/drawable/tool_bar_selector.xml

 正在签名: res/drawable/tool_btu.xml

 正在签名: res/layout/copy_dialog.xml

 正在签名: res/layout/device_adapter.xml

 正在签名: res/layout/device_list_item.xml

 正在签名: res/layout/editor_layout.xml

 正在签名: res/layout/file_details.xml

 正在签名: res/layout/main.xml

 正在签名: res/layout/new_smb_server.xml

 正在签名: res/layout/new_username_password.xml

 正在签名: res/layout/normal_adapter.xml

 正在签名: res/layout/pictureview.xml

 正在签名: res/layout/recovery_dialog.xml

 正在签名: res/layout/rename_alert_dialog.xml

 正在签名: res/layout/reslover_adapter.xml

 正在签名: res/layout/smb_editor_layout.xml

 正在签名: res/layout/smb_search_progress.xml

 正在签名: res/layout/title_bar.xml

 正在签名: res/layout/tool_bar.xml

  jar 已签名。

警告: 

  签名者证书为自签名证书。

  未提供 -tsa 或 -tsacert, 此 jar 没有时间戳。如果没有时间戳, 则在签名者证书的到期日期 (2154-09-25) 或以后的任何撤销日期之后, 用户可能无法验证此 jar。

   至此使用JKS文件为APK签名完成。

   参考资料:

   

   

单点登录JWT与Spring Security OAuth

通过 JWT 配合 Spring Security OAuth2 使用的方式,可以避免 每次请求 都 远程调度 认证授权服务。 资源服务器 只需要从 授权服务器 验证一次,返回 JWT。返回的 JWT 包含了 用户 的所有信息,包括 权限信息 。

1. 什么是JWT

JSON Web Token(JWT)是一种开放的标准(RFC 7519),JWT 定义了一种 紧凑 且 自包含 的标准,旨在将各个主体的信息包装为 JSON 对象。 主体信息 是通过 数字签名 进行 加密 和 验证 的。经常使用 HMAC 算法或 RSA( 公钥 / 私钥 的 非对称性加密 )算法对 JWT 进行签名, 安全性很高 。

2. JWT的结构

JWT 的结构由三部分组成:Header(头)、Payload(有效负荷)和 Signature(签名)。因此 JWT 通常的格式是 xxxxx.yyyyy.zzzzz。

2.1. Header

Header 通常是由 两部分 组成:令牌的 类型 (即 JWT)和使用的 算法类型 ,如 HMAC、SHA256 和 RSA。例如:

将 Header 用 Base64 编码作为 JWT 的 第一部分 ,不建议在 JWT 的 Header 中放置 敏感信息 。

2.2. Payload

下面是 Payload 部分的一个示例:

将 Payload 用 Base64 编码作为 JWT 的 第二部分 ,不建议在 JWT 的 Payload 中放置 敏感信息 。

2.3. Signature

要创建签名部分,需要利用 秘钥 对 Base64 编码后的 Header 和 Payload 进行 加密 ,加密算法的公式如下:

签名 可以用于验证 消息 在 传递过程 中有没有被更改。对于使用 私钥签名 的 token,它还可以验证 JWT 的 发送方 是否为它所称的 发送方 。

3. JWT的工作方式

客户端 获取 JWT 后,对于以后的 每次请求 ,都不需要再通过 授权服务 来判断该请求的 用户 以及该 用户的权限 。在微服务系统中,可以利用 JWT 实现 单点登录 。认证流程图如下:

4. 案例工程结构

工程原理示意图如下:

5. 构建auth-service授权服务

UserServiceDetail.java

UserRepository.java

实体类 User 和上一篇文章的内容一样,需要实现 UserDetails 接口,实体类 Role 需要实现 GrantedAuthority 接口。

User.java

Role.java

jks 文件的生成需要使用 Java keytool 工具,保证 Java 环境变量没问题,输入命令如下:

其中,-alias 选项为 别名 ,-keyalg 为 加密算法 ,-keypass 和 -storepass 为 密码选项 ,-keystore 为 jks 的 文件名称 ,-validity 为配置 jks 文件 过期时间 (单位:天)。

生成的 jks 文件作为 私钥 ,只允许 授权服务 所持有,用作 加密生成 JWT。把生成的 jks 文件放到 auth-service 模块的 src/main/resource 目录下即可。

对于 user-service 这样的 资源服务 ,需要使用 jks 的 公钥 对 JWT 进行 解密 。获取 jks 文件的 公钥 的命令如下:

这个命令要求安装 openSSL 下载地址,然后手动把安装的 openssl.exe 所在目录配置到 环境变量 。

输入密码 fzp123 后,显示的信息很多,只需要提取 PUBLIC KEY,即如下所示:

新建一个 public.cert 文件,将上面的 公钥信息 复制到 public.cert 文件中并保存。并将文件放到 user-service 等 资源服务 的 src/main/resources 目录下。至此 auth-service 搭建完毕。

maven 在项目编译时,可能会将 jks 文件 编译 ,导致 jks 文件 乱码 ,最后不可用。需要在 pom.xml 文件中添加以下内容:

6. 构建user-service资源服务

注入 JwtTokenStore 类型的 Bean,同时初始化 JWT 转换器 JwtAccessTokenConverter,设置用于解密 JWT 的 公钥 。

配置 资源服务 的认证管理,除了 注册 和 登录 的接口之外,其他的接口都需要 认证 。

新建一个配置类 GlobalMethodSecurityConfig,通过 @EnableGlobalMethodSecurity 注解开启 方法级别 的 安全验证 。

拷贝 auth-service 模块的 User、Role 和 UserRepository 三个类到本模块。在 Service 层的 UserService 编写一个 插入用户 的方法,代码如下:

配置用于用户密码 加密 的工具类 BPwdEncoderUtil:

实现一个 用户注册 的 API 接口 /user/register,代码如下:

在 Service 层的 UserServiceDetail 中添加一个 login() 方法,代码如下:

AuthServiceClient 作为 Feign Client,通过向 auth-service 服务接口 /oauth/token 远程调用获取 JWT。在请求 /oauth/token 的 API 接口中,需要在 请求头 传入 Authorization 信息, 认证类型 ( grant_type )、用户名 ( username ) 和 密码 ( password ),代码如下:

其中,AuthServiceHystrix 为 AuthServiceClient 的 熔断器 ,代码如下:

JWT 包含了 access_token、token_type 和 refresh_token 等信息,代码如下:

UserLoginDTO 包含了一个 User 和一个 JWT 成员属性,用于返回数据的实体:

登录异常类 UserLoginException

全局异常处理 切面类 ExceptionHandle

在 Web 层的 UserController 类中新增一个登录的 API 接口 /user/login 如下:

依次启动 eureka-service,auth-service 和 user-service 三个服务。

7. 使用Postman测试

因为没有权限,访问被拒绝。在数据库手动添加 ROLE_ADMIN 权限,并与该用户关联。重新登录并获取 JWT,再次请求 /user/foo 接口。

在本案例中,用户通过 登录接口 来获取 授权服务 加密后的 JWT。用户成功获取 JWT 后,在以后每次访问 资源服务 的请求中,都需要携带上 JWT。 资源服务 通过 公钥解密 JWT, 解密成功 后可以获取 用户信息 和 权限信息 ,从而判断该 JWT 所对应的 用户 是谁,具有什么 权限 。

获取一次 Token,多次使用, 资源服务 不再每次访问 授权服务 该 Token 所对应的 用户信息 和用户的 权限信息 。

一旦 用户信息 或者 权限信息 发生了改变,Token 中存储的相关信息并 没有改变 ,需要 重新登录 获取新的 Token。就算重新获取了 Token,如果原来的 Token 没有过期,仍然是可以使用的。一种改进方式是在登录成功后,将获取的 Token 缓存 在 网关上 。如果用户的 权限更改 ,将 网关 上缓存的 Token 删除 。当请求经过 网关 ,判断请求的 Token 在 缓存 中是否存在,如果缓存中不存在该 Token,则提示用户 重新登录 。

jks 证书文件的生成步骤

作为文件形式存在的证书,一般有三类:

A.

包含有私钥的证书,包含了公钥和私钥,用pkcs12标准,而一般以pfx 作为扩展名;

B.

DER 编码证书,不含私钥,以cer 结尾,文件是二进制data. 通常CA(无论是intermediate CA还是root CA)证书都是这类;

C.

BASE64编码的证书,这类证书也不含私钥,一般也以cer结尾,是pem证书, 这类证书可以直接cat 出结果, 特征是”-----BEGIN CERTIFICATE----- “开头,“-----END CERTIFICATE-----”结尾;

对于DER/PEM证书,可以通过openssl 来确认其编码类型(假设要查看的证书是client_cert.cer):

openssl x509 -in ./client_cert.cer -inform pem -noout -text

openssl x509 -in ./client_ert.cer -inform der -noout -text

jks 是java key store 的简称,也就是java 常用的证书文件. jks 证书文件一般包含私钥以及签名的cert一起组成的. 要生成jks 可以使用java 的keytool工具 以及openssl 来完成,没有特殊需求的情况先,可以只用这两个工具就可以了:

基本的过程是这样的:

具体的步骤如下:

上述创建私钥以及生成CSR的过程,可以用keytool工具来实现(MW的support 人员更乐于用keytool工具来实现),具体为:

上述步骤就成功创建了csr文件,并且成功获得了对应的private key. (无论是基于openssl 命令还是keytool命令)

然后需要将csr发送给证书签发者,然后证书签发者进行证书的签发; 签发后,一般会发回 crt 证书文件. 以及root ca, intermediate ca 还有签发的pem证书;

后面的步骤是创建证书链:

查看证书:

keytool -list -v -keystore test_keystore2.jks -storepass xoxoxo

查看证书请求文件:

keytool -printcertreq -file

查看已经签名的证书:

keytool -printcert -file GlobalSign_cert.cer

如何通过本机简单验证ssl 证书是否正确呢? 用openssl 命令在本机开启ssl 的服务器和客户端,然后用ssl 方式进行连接进行验证:

然后看输出的结果,就知道是否证书是ok的;

diff -eq (openssl x509 -pubkey -noout -in mycert.crt) (openssl rsa -pubout -in mycert.key)

jdk的keytool生成jks及获取jks的信息

生成jks

命令:

keytool -genkeypair -alias myAlias -keyalg RSA -keypass myKeyPass -keystore myKeystore.jks -storepass myStorePass -storetype jks

myAlias: 密钥对的别名

myKeyPass: 私玥保护口令

myKeystore.jks: Keystore 文件名

myStorePass: keystore保护口令

storetype: 证书库类型

例如:

keytool -genkeypair -alias uc -keyalg RSA -keypass ucpass -keystore uc.jks -storepass ucstorepass -storetype jks

导入证书到制定的证书库

keytool -import -alias aliasName -keystore keystorePath -file certPath

aliasName:证书别名

keystorePath: keystore路径

certPath: 证书路径

通过别名查询证书库中是否存在证书

keytool -list -keystore keystorePath -alias aliasName

aliasName:证书别名

keystorePath: keystore路径

certPath: 证书路径

从JKS中导出证书

keytool -list -v -keystore jksName.jks

keytool -export -alias aliasName -keystore jksName.jks -storepass 密钥库口令 -file certName.cer

解决unable to find valid certification path to requested target

java调用https请求如果网站的跟证书不存在于jre的默认证书库中,会出现上述异常

解决方法可以将网站的证书导入到jre的证书库中

导入方法:

javajks文件的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于jdk生成的文件格式、javajks文件的信息别忘了在本站进行查找喔。