Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Closed
henryhqhuang opened this issue May 10, 2019 · 3 comments

Comments

@henryhqhuang
Copy link

henryhqhuang commented May 10, 2019

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 ?

@walking98
Copy link
Contributor

walking98 commented May 13, 2019

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
Copy link
Member

@henryhqhuang Have you solved your problem?

@henryhqhuang
Copy link
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
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants