DRACs and Macs and Java Hacks

I’m inherently lazy. Like, “I want a bottle of water, but it’s all the way over there, so I guess I’ll just dehydrate” style lazy.

Our server room is maybe, MAYBE, 50 feet from my desk. But I’ve got to go around a wall and unlock two doors, disable an alarm system, fight a dragon, and then find the machine I want to administer. Ain’t nobody got time for that.

To make sure that I can maintain my standards of laziness, we have remote management available for all of our servers. Since we’re a Dell shop, that consists of DRAC , the Dell Remote Access Controller (with the Enterprise license for remote console).

In the past, these have been of questionable quality and perhaps I have, on occasion, called into question the marital status of the DRAC’s mother, but we seem to have settled into an uneasy truce where I try to do things, and it continually tells me no until I ask nicely enough.

The first case in point is the DRAC’s remote console and the security surrounding it. If you ever take a look at the jnlp file, you’ll see that the application pulls down a platform-specific jar file that is the actual KVM application.

When you run jarsigner -verbose -certs -verify on the jar file, here’s what you get:

$ jarsigner -verbose -certs -verify ./avctVMLinux32.jar

135 Thu Sep 08 13:44:00 EDT 2011 META-INF/MANIFEST.MF
259 Thu Sep 08 13:44:00 EDT 2011 META-INF/DELL.SF
5406 Thu Sep 08 13:44:00 EDT 2011 META-INF/DELL.RSA
0 Thu Sep 08 13:42:48 EDT 2011 META-INF/
sm 160904 Thu Dec 11 19:54:40 EST 2008 libavmlinux.so

[entry was signed on 9/8/11 9:44 AM]
X.509, CN=Dell Inc., OU=PG Software Development, OU=Digital ID Class 3 – Java Object Signing, O=Dell Inc., L=Round Rock, ST=Texas, C=US
[certificate expired on 8/30/13 7:59 PM]

X.509, CN=VeriSign Class 3 Code Signing 2009-2 CA, OU=Terms of use at https://www.verisign.com/rpa (c)09, OU=VeriSign Trust Network, O=”VeriSign, Inc.”, C=US
[certificate is valid from 5/20/09 8:00 PM to 5/20/19 7:59 PM]
[KeyUsage extension does not support code signing]
X.509, OU=Class 3 Public Primary Certification Authority, O=”VeriSign, Inc.”, C=US
[certificate is valid from 1/28/96 7:00 PM to 8/1/28 7:59 PM]

s = signature was verified
m = entry is listed in manifest
k = at least one certificate was found in keystore
i = at least one certificate was found in identity scope

jar verified.

This jar contains entries whose signer certificate has expired.

Emphasis mine.

As you can see via the bolded line, the certificate used to sign this jar file expired in August of 2013. This creates an awkward situation, because Java 1.7 got all gung-ho about security and was like, “sorry dude, no can do. If you want to run this, you’ve got to turn your security into swiss cheese. Via con Dios”. That might be a loose quote.

Of course, that’s assuming you can actually run the thing. If you’re on a Mac, your computer is conspiring against you. If you run Chrome, for reasons that have never been apparent to me, the jnlp file doesn’t actually get downloaded as viewer.jnlp. It gets downloaded as viewer.jnlp([email protected]@idrac-6C61TS1,+PowerEdge+R410,[email protected]).[email protected]@idrac-6C61TS1,+PowerEdge+R410,[email protected]), and at least on a Mac, the OS is like, “Sorry, I’ve got no idea. Would you like to open this with like, text edit, or maybe XMLedit? Because I can’t do anything with this”.

So once you rename it to .jnlp (complete with scary “changing the file extension may lead to wormholes destroying the universe” warnings), then you double click the file and your computer goes full-on HAL9000. “I’m sorry, Matt, I’m afraid I can’t let you do that”.


The workaround is, of course, to right click the file then select Open. This lets the computer know that you’re totally serial about opening the malware.

Once you do that (then click Open again), Java actually pulls down the jar file and runs it. If you haven’t replaced the self-signed DRAC certificate (you lout), then you get an SSL warning when it pulls the jar file, of course. But then you have the jar file, and it runs it, and immediately pukes because of the aforementioned signing issue.

The way to trick it into running is to go into your System Preferences, launch the Java Control Panel, go to Security, say “I solomnly swear that I am up to no good”, set your security slider to “High” or if you live dangerously, Medium. I’d say “Low”, but much like the pizza place by my house, there is no “Small”, only “Medium, “Large”, and “Extra Large”. You know what? That makes Medium the Small, you morons! Gah!

Anyway, where were we? Right, change your security level to High or Medium, then in the Exception Site List section, click the Edit Site List, then add the https:// url to your DRAC. Yes, all of them. No, you can’t use wildcards. Awesome, right?

Anyway, add your DRACs to the list (or just edit the list once and distribute it) and then you’ll be able to connect.

Of course…if you’re trying to manage ESXi machines like I am, and you’re logging in to the console to, say, reset the management agents, you’re going to run into other problems…like the fact that VMware’s ESXi console makes extensive use of the F11 key, something Macs have claimed as their own, as pressing F11 launches Expose. So basically, by default, you can’t possibly press F11 in the virtual terminal because it makes all of your windows scatter like cockroaches.

You can also fix that by going into the control panel, clicking on Mission Control, and change the “Show Desktop” shortcut to something that your enterprise consoles haven’t used for critical functionality.

So there. If you use a Mac to manage things, hopefully you can at least remove those particular hurdles. What other things do you run into with Macs (or just stupid platforms in general)? Comment and let me know!

  • This is pretty much my reaction to any out-of-band management system I’ve ever met. I think it’s an embarassment!

  • Cisco, Dell etc. all the main stream vendors seem quite happy to push out systems with unsigned or outdated signing certs associated with them.

    Hopefully (ha!) customers can put enough pressure on them to sort this nonsense out and start acting like responsible vendors. *grump*

  • Scott Frazer

    I’m in a similar situation, but my servers are at opposite ends of the continent while I sit here in lovely Chicago.

    My solution was to install VMWare Fusion and run Windows 7. You’ll still have to make exceptions in IE to access the DRAC admin webpage, though. Failing to do so results in a DRAC menu with no actual content in it.

  • Matt Simmons

    Ugh. That’s terrible.

  • Scott Frazer

    It was easier than fighting through Java on OS X :-)

    Bonus: I don’t run Java on my OS X machine now.

  • 2dawolf

    One thing I would recommend doing is going to Keyboard settings and hitting “Use all F1, F2, etc. keys as standard function keys,” which gets rid of a lot of the hassle of using a Mac for *nix-y things. It’s one of the first things I do with any new mac I work on.

    I think java security options should be like, Starbucks sizes, to further hide the fact that java security doesn’t really exist (hey, disabling java system-wide unless you turn off security means that java is a secure platform right?). Do you want Venti security or Tall security?

  • Eric Ramnes

    One thing we did to fix the signing issues is update the DRAC firmware to 1.97 (we have iDRAC 6’s, if you have iDRAC 7’s the version might be different). This fixes the certificate expiration issue for the console. This also resolved a number of other issues we had with the menus not responding or settings not taking effect when configuring the cards.

    The JNLP issue is a problem even in Windows if you use Chrome. Wish someone would figure that out, because it’s a pain to have to rename the viewer each time. Maybe in a future release.

  • So … why did everyone stop using serial consoles? They pair well with remote power management … no java …

  • I added a Hazel (http://www.noodlesoft.com/hazel.php) task to remove the quarantine from jnlp files that hit my downloads folder and open them.

    The embedded script is as simple as:

    xattr -d -r com.apple.quarantine “$1”
    open “$1”

    Still get a lot of stupid java popups and acknowledgements i have to click, but that takes at least 2-3 operations out of the sequence.