Skip to content

docker image run exception : NoSuchAlgorithmException: Algorithm HmacSHA1 not available #276

Closed
@henryhqhuang

Description

@henryhqhuang

BUG REPORT

  1. Please describe the issue you observed:

I use docker pull rocketmqinc/rocketmq latest , pull rmq docker image
and run docker use follow two line

docker run -d -p 9876:9876 -v ~/logs:/home/rocketmq/logs -v ~namesrv/store:/home/rocketmq/store --name rmqnamesrv  rocketmqinc/rocketmq sh mqnamesrv

docker run -d -p 10911:10911 -p 10909:10909 -v ~/logs:/home/rocketmq/logs -v ~/broker/store:/home/rocketmq/store --name rmqbroker --link rmqnamesrv:namesrv -e "NAMESRV_ADDR=namesrv:9876" rocketmqinc/rocketmq sh mqbroker

I run

docker exec -it 683f94d89122 ./mqadmin clusterList -n namesrvip:9876
  • What did you expect to see?

success connect

  • What did you see instead?
OpenJDK 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0
OpenJDK 64-Bit Server VM warning: ignoring option MaxPermSize=128m; support was removed in 8.0
org.apache.rocketmq.tools.command.SubCommandException: ClusterListSubCommand command failed
	at org.apache.rocketmq.tools.command.cluster.ClusterListSubCommand.execute(ClusterListSubCommand.java:93)
	at org.apache.rocketmq.tools.command.MQAdminStartup.main0(MQAdminStartup.java:135)
	at org.apache.rocketmq.tools.command.MQAdminStartup.main(MQAdminStartup.java:86)
Caused by: org.apache.rocketmq.acl.common.AclException: [10015:signature-failed] unable to calculate a request signature. error=[10015:signature-failed] unable to calculate a request signature. error=Algorithm HmacSHA1 not available
	at org.apache.rocketmq.acl.common.AclSigner.signAndBase64Encode(AclSigner.java:84)
	at org.apache.rocketmq.acl.common.AclSigner.calSignature(AclSigner.java:73)
	at org.apache.rocketmq.acl.common.AclSigner.calSignature(AclSigner.java:68)
	at org.apache.rocketmq.acl.common.AclUtils.calSignature(AclUtils.java:58)
	at org.apache.rocketmq.acl.common.AclClientRPCHook.doBeforeRequest(AclClientRPCHook.java:44)
	at org.apache.rocketmq.remoting.netty.NettyRemotingAbstract.doBeforeRpcHooks(NettyRemotingAbstract.java:172)
	at org.apache.rocketmq.remoting.netty.NettyRemotingClient.invokeSync(NettyRemotingClient.java:370)
	at org.apache.rocketmq.client.impl.MQClientAPIImpl.getBrokerClusterInfo(MQClientAPIImpl.java:1180)
	at org.apache.rocketmq.tools.admin.DefaultMQAdminExtImpl.examineBrokerClusterInfo(DefaultMQAdminExtImpl.java:275)
	at org.apache.rocketmq.tools.admin.DefaultMQAdminExt.examineBrokerClusterInfo(DefaultMQAdminExt.java:222)
	at org.apache.rocketmq.tools.command.cluster.ClusterListSubCommand.printClusterBaseInfo(ClusterListSubCommand.java:172)
	at org.apache.rocketmq.tools.command.cluster.ClusterListSubCommand.execute(ClusterListSubCommand.java:88)
	... 2 more
Caused by: org.apache.rocketmq.acl.common.AclException: [10015:signature-failed] unable to calculate a request signature. error=Algorithm HmacSHA1 not available
	at org.apache.rocketmq.acl.common.AclSigner.sign(AclSigner.java:63)
	at org.apache.rocketmq.acl.common.AclSigner.signAndBase64Encode(AclSigner.java:79)
	... 13 more
Caused by: java.security.NoSuchAlgorithmException: Algorithm HmacSHA1 not available
	at javax.crypto.Mac.getInstance(Mac.java:181)
	at org.apache.rocketmq.acl.common.AclSigner.sign(AclSigner.java:57)
	... 14 more
  1. Please tell us about your environment:

docker

  1. Other information (e.g. detailed explanation, logs, related issues, suggestions how to fix, etc):

what's in runbroker.sh has:

JAVA_OPT="${JAVA_OPT} -Djava.ext.dirs=${JAVA_HOME}/jre/lib/ext:${BASE_DIR}/lib"

is /opt/rocketmq-4.4.0/lib missed sunjce_provider.jar ?

Activity

walking98

walking98 commented on May 13, 2019

@walking98
Contributor

The sunjce_provider.jar is located in JAVA_HOME/jre/lib/ext.
The root reason is that the Dockerfile does not set the JAVA_HOME correctly when generating rocketmq docker image.
A quick workaround is to add the following env in play-docker.sh
-e "JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.212.b04-0.el7_6.x86_64/jre"

vongosling

vongosling commented on Jun 3, 2019

@vongosling
Member

@henryhqhuang Have you solved your problem?

henryhqhuang

henryhqhuang commented on Jun 3, 2019

@henryhqhuang
Author

@vongosling ,yes, i used @walking98‘s resolution, resovled this issue

The sunjce_provider.jar is located in JAVA_HOME/jre/lib/ext.
The root reason is that the Dockerfile does not set the JAVA_HOME correctly when generating rocketmq docker image.
A quick workaround is to add the following env in play-docker.sh
-e "JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.212.b04-0.el7_6.x86_64/jre"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      No branches or pull requests

        Participants

        @vongosling@henryhqhuang@walking98

        Issue actions

          docker image run exception : NoSuchAlgorithmException: Algorithm HmacSHA1 not available · Issue #276 · apache/rocketmq-externals